简单算法
酱油p
这个作者很懒,什么都没留下…
展开
-
合并—查找算法
1. 查找-合并算法的解释查找:检查两个对象是否属于同一个集合。(是否是同一个集合,这是对某些问题的抽象) 合并:用一个集合替代两个对象分别对应的集合。 数据结构:使用一个大小为N的数组id[],p和q是连通的如果他们对应的id值一样。 例如: 节点: i 0 1 2 3 4 5 6 7 8 9 初始:原创 2013-05-05 14:54:38 · 595 阅读 · 0 评论 -
两个基本搜索算法——顺序搜索与二分搜索
考虑两个基本算法:顺序搜索与二分搜索,他们都是用来确定一个对象是否出现在已有的对象的集合中。实例:假设一个信用卡公司有N张信誉有问题或被盗的信用卡,希望检查M个给出的事务是否与这N张信用卡有关。 程序2.1 顺序搜索算法 这是个最简单的搜索算法 int search(int a[],int v,int l,int r) { int i; for(i=1;i<原创 2013-05-05 19:44:46 · 530 阅读 · 0 评论 -
归并排序
#include #include void MSort(int a[],int temp[],int low,int high);void MergeSort(int *a,int len) //归并排序算法{ int *TR = (int *)malloc(sizeof(int) * len); //动态分配一个额外的存储空间 MSort(a,TR,0,len-1); //分裂然后转载 2013-09-03 10:26:24 · 363 阅读 · 0 评论 -
堆数据结构与堆排序的个人理解
关于堆排序,已经研究了整整一个星期,不论是从网络论坛CSDN或者图书馆书籍中,都获益匪浅,但是知识内容都是差不多的,如何理解是自己的。这里我就写一下自堆排序的认识。首先要弄清楚的观点是:1、堆是一种数据结构通常来说,一种数据结构所必备的操作有三个:初始化,插入数据,删除数据。堆也不例外。因此一旦我们写出了数据结构的基本操作,我们可以将其封装起来,用于其它的地方。比如可以原创 2013-09-11 16:42:13 · 485 阅读 · 0 评论 -
【算法经典】KMP算法理解
假如,A="abababaababacb",B="ababacb",我们来看看KMP是怎么工作的。我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。当A[i+1]=B[j+1]时,i和j转载 2014-01-15 16:56:32 · 430 阅读 · 0 评论