1 #include<iostream>2usingnamespace std;3 4//************快速排序法********* 5int partiton(int array[10],int s,int t,int &cutpoint){6int x=array[s];7int i,j;8 i=s;9 j=t;
10while(i!=j){
11while(i<j&&array[j]>x)j--;
12if(i<j){
13 array[i]=array[j];
14 i++;
15 }
16while(i<j&&array[i]<x)i++;
17if(i<j){
18 array[j]=array[i];
19 j--;
20 ...
0 解题步骤回溯法解题时通常包含3个步骤:1. 针对所给问题,定义问题的解空间;2. 确定易于搜索的解空间结构;3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。对于问题的解空间结构通常以树或图的形式表示,常用的两类典型的解空间树是子集树和排列树。当所给的问题是从n个元素的集合S中找到S满足某种性质的子集时,相应的解空间树称为子集树。例如,n个物品的0-1背包问题所对应的解空间树是一棵子集树,这类...
(期末考试快到了,所以比较粗糙,请各位读者理解。。)一、 概念DBSCAN是一种产生划分聚类的基于密度的聚类算法,簇的个数由算法自动地确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生完全聚类。二、 伪代码1 将所有点标记为核心点、边界点和噪声点。2 删除噪声点。3 为距离在Eps之内的所有核心点之间赋予一条边。4 每组连通的核心点形成一个簇。5 将每个边界点指派到一个与之关联的核心点的簇中。...
二分图:顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y.二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的匹配称为图的最大匹配.完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配.二分图匹配基本概念:未盖点:设VI是G的一个顶点,如果VI不与任意一条属于匹配M的边相关联,就称VI...
本文根据《大话数据结构》一书,实现了Java版的二叉排序树/二叉搜索树。二叉排序树介绍在上篇博客中,顺序表的插入和删除效率还可以,但查找效率很低;而有序线性表中,可以使用折半、插值、斐波那契等查找方法来实现,但因为要保持有序,其插入和删除操作很耗费时间。二叉排序树(Binary Sort Tree),又称为二叉搜索树,则可以在高效率的查找下,同时保持插入和删除操作也又较高的效率。下图为典型的二叉排序树。二叉查找树具有以下...
1.O(1)调度器的时间计算公式与CFS调度器Linux 2.6.23之前普遍采用了O(1)调度器,它是一种基于优先级的时间片调度算法,所谓的O(1)只是它的一些精巧的数据结构使然,在不考虑动态补偿/惩罚的情况下,只要优先级确定,那么时间片就是固定的。2.6.23以后的CFS呢,它是一种基于权重的非时间片调度算法,进程每次执行的时间并不是固定的,而是根据进程数在一个准固定周期内按照其权重比例的时间,依然以时间片为术语,CFS下,进程每次运...
1. 原理插入排序是顾名思义是将未进行排序的元素不断插入到已排序序列中的排序方法。如下图所示: 插入排序说白点就是在以排序的序列中找到未排序元素的位置,并将元素插入行程新的已排序序列的过程。2.排序过程及算法设计排序过程以一个实际的例子为例:设有序列{7,9,6,12,15,11},使用插入排序对上述的序列按从小到大进行排序,排序的过程可描述如下: 算法设计插入排序是将元素插入已排序序列的过程,排序过程需要将元素与已排序...
马拉车算法用于寻找字符串中的最长回文子串。javaclass ManacherAlgo {String longestPalindrome(String s) {// 填充String newS = fillStr(s);// center是中心,right是中心的最远覆盖范围,max_center是最长回文字串的中心int right = 0, center = 0, max_center = 0;// 记录每个位置的最远覆盖范围int[] radius = new int[newS.length()];int lenOfNewS = newS.length();// 算法主体for (int idx = 1; idx < lenOfNewS; idx++) ...
课本上关于这一节讲得不是很清楚部分内容参考自:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html扩展欧几里德算法基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。扩展欧几里德算法的应用主要有以下三方面:(1)求解不定方程;(2)求解模线性方程(线性同余方程);(3)求解模的逆元; (1): 设a,b,c为任意整数,g=gc...
巴什博弈 (bash game)题型仅有一堆n个物品,两个人轮流取1~m个,最后取的人胜(不能取的人输)分析总体可分几种情况$n=0$,先手输$0<n<=m$,先手胜$n=m+1$,先手输$n=k*(m+1)+r$,先手胜(先手取走r个,给后手留下k*(m+1)的局面)$n=k*(m+1)$,先手输代码int Bash_Game(int n,int m) //是否先手有必赢策略
{if(n==0) return0;if(n%(m+1)!=0) return1;return0;
}
尼姆博弈(Nim Game)题型将一堆变为多堆;即:有3堆各若干个物品,两个人轮流从某...
【Right集合】后缀自动机真正优于后缀树的方面在于:结合了有限状态自动机,从而实现了O(n)的时空复杂度。trans(s,str)表示s+str到达的状态。ST(str)=trans(init,str)即包括了str这一子串的唯一状态(一个子串只能属于一个状态)定义字符串a在S中出现的右端点位置集合Right(a)=r1,r2...rn。SAM中一个状态s的Right集合为Right(s),那么状态s表示所有[Right(a)=Right(s)的子串a],那么实际上状态s表示的子串a的长度在一个区间内,记作...
业务解决方案:0. 数据源加载1. 特征工程: 字符转数值/二值型/多值型 把字符型特征转化成算法可以处理的数值表示,实现特征抽象.特征是二值型的, 如sex 这个字段有male 和fem 两种,就把sex 抽象成0 和1。如果特征的数值是多值型, 如status,就按照严重程度从0 到1 再到2 来抽象.2.数据预处理:数值转double/归一化到0 和1 之间 通过“类型转换组件”先把数据类型全部转化成 double 型(机器学习算法普遍对double 型数据的支持比...
解题报告二分图第一题。题目描述:为了参加即将召开的会议,A国派出M位代表,B国派出N位代表,(N,M<=1000)会议召开前,选出K队代表,每对代表必须一个是A国的,一个是B国的;要求每一个代表要与另一方的一个代表联系,除了可以直接联系,也可以电话联系,求电话联系最少思路:电话联系最少就要使直接联系最大,又是一一匹配关系,就是二分图的最大匹配。下面是匈牙利算法。#include <cstdio>
#include <cstring>
#include <iostr...
算法训练 P1102 时间限制:1.0s 内存限制:256.0MB 定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。 输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩...
选择排序的基本思想:每次选择未排序元素中的最小(非增序列)或者最大(非减序列)的一个一次加入到已排序序列后面,直到所有元素都排序完 #include <stdio.h>
void selection_sort(int arr[],int length)
{int i,j;for (i = 0; i < length; i++){int minval_index = i;for (j = i+1; j < length; j++){if (arr[j] < arr[minval_index]){minval_index = j;}}int temp = arr[i];arr[i] = arr[minval_index];arr[minval_index] = temp;}
}...