操作系统中各个算法的运用使计算机系统的各个部件协调工作,使资源利用,程序执行更加合理高效。对比我们的生活,操作系统就像是一个百货商店,而算法就实现了让商店的利润尽可能达到最大。...
分类:
编程语言 时间:
2015-03-31 09:15:47
阅读次数:
177
一、冒泡排序 时间复杂度:O(N²) 原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,直到数组结束。 void Bubble(i...
分类:
编程语言 时间:
2015-03-31 00:24:38
阅读次数:
148
1、顺序查找 时间复杂度:O(n)优点:算法简单,对查找表的记录没有任何要求缺点:效率低下适用:数据量较少时的查找 原理: 在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从最后一个开始逐个比较,直到找出与给定关键字相同的数为止。 int Sequence...
分类:
编程语言 时间:
2015-03-30 18:36:47
阅读次数:
220
肯定有很多人对kmp算法,学了很多遍了,还是不懂,其实,很简单,我们简单的来看两个问题,就可以了!
一般的暴力算法,大家,应该都知道,扫两次,直接比较,就可以得到答案了,
我们直接来看,有没有可以简化
首先,和一般的算法一样,直接匹配,直到p[i]!=p[j];这时,如果是一般的算法i要回退回去,j也要从新开始,但我们没有好好的利用已经得到的有用信息
如图已经知道了,前面一段是相等...
分类:
编程语言 时间:
2015-03-28 11:37:19
阅读次数:
184
Dijkstra:复杂度:O(n^2)用途:求起点到终点的最短路径,不需要吧每个点走到适用条件:原理:利用邻接矩阵,用d数组记录最小值,用p标记是否用过这组数据。步骤:一大for,两小for,第一个小for用来的出当前的d中的最小值,为了得到下标,第二个小for用来更新map最小值,得出结果,循环整...
分类:
编程语言 时间:
2015-03-20 21:49:00
阅读次数:
141
Prim:复杂度:O(n^2)用途:最小生成树算法,求一点到所有的位置之和的最小值,不是形成环,是把所有顶点连在一起的最短路适用条件:步骤:跟Dijkstra出奇的相似,只是prim把d和p都变成一个k数组(- -其实一样好吗)而且Dijkstra是第一个for为了记录下标,而prim是为了记录下标...
分类:
编程语言 时间:
2015-03-20 21:41:52
阅读次数:
178
快排:适用条件:方便...只要数字不是很多复杂度:O(nlogn) 每一层n复杂度,共logn层原理:利用一个随机数与最后面一个数交换,那么这个随机数就到了最后一位,然后循环,如果前面的数大于最后一个数,那么把这个数放到前面去,经过一次排序之后,前面的数都是大于最后一个的,然后对1到k和k+1到n进...
分类:
编程语言 时间:
2015-03-20 20:22:15
阅读次数:
212
Floyed:复杂度:O(n^3)用途:求一条路走完所有的地方的的最小值,很简单,就三个for,一般写floyed不谢bellman_ford~~~适用条件:遍历所有的点,适合于稠密图,floyed与bellman_ford算法之间的区别就是floyed计算了从每一点开始的值,最后只要选取就行,方便...
分类:
编程语言 时间:
2015-03-20 20:19:42
阅读次数:
190
#include#includeusing namespace std;int main(){ long long begin,end,mid,k; long long n,m; begin = 1;end = 100000000; scanf("%d%d",&n,&m)...
分类:
编程语言 时间:
2015-03-19 13:03:07
阅读次数:
247
转载自: http://blog.csdn.net/dyx404514/article/details/42061017Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车...
分类:
编程语言 时间:
2015-03-18 22:56:09
阅读次数:
205