算法
文章平均质量分 69
0xcccccccc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
谈谈自己对KMP算法的见解
开门见山,KMP算法是用来解决一个字符串在另外一个字符串中是否存在,如果存在,则返回它在该串的位置。 看过一些讲解KMP算法的,讲的都比较晦涩,难懂。一次偶然看了知乎上的一篇对KMP的讲解:https://www.zhihu.com/question/21923021/answer/281346746 讲的还不错,拿来学习学习。 对于初次学习KMP算法的困惑难点如下: (1)next数组是什...原创 2018-09-27 16:24:30 · 669 阅读 · 0 评论 -
快速排序来袭
习惯了开门见山: 快速排序的思想是通过一趟排序将待排记录分割成独立的两部分,关键字左边的都比其小(大),右边的都比其大(小)。分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 至此,low和high重合,则一趟快速排序结束。可以看到在关键字5的左边的记录都比它小,右边的记录都比它大。这里的关键字其实就是选的序列中的第一个数字。 以上操作的代码如下: ...原创 2018-09-27 22:13:52 · 226 阅读 · 0 评论 -
堆排序来袭
说起堆排序就不得先说下简单选择排序,毕竟都是选择排序类,堆排序也是对选择排序的一种改进。 选择排序我的理解就是每趟找出某位置应该放的记录。直接上代码,拿代码感受吧: void main() { int arr[10] = {1,4,5,7,3,8,2,9,6,0}; int len = sizeof(arr)/sizeof(arr[0]); for(int i=0;i<len-1...原创 2018-09-28 15:38:12 · 234 阅读 · 0 评论 -
归并排序来袭
归并排序的基本思想是将两个或两个以上的有序表组合成一个新的有序表。来张丑图: 来上代码: //归并排序递归 void Merge(int *arr, int start, int mid, int end) { assert(NULL != arr); int low = start; int high = mid + 1; int *brr = (int *)malloc(si...原创 2018-09-28 22:12:32 · 235 阅读 · 0 评论 -
希尔排序来袭
说起希尔排序,那不得先说说直接插入排序,插入排序的基本思想是:将记录插入到有序的列队中。比如有一组记录{1,9,10,13},将一个新的记录5插入后是{1,5,9,10,13}。简单分析下,插入的过程是从原来记录的尾部开始和待插入记录进行比较,如果比较失败则移动当前比较的记录,直到比较成功,将记录插入。注意是边比较边移动。来看代码: //直接插入 void main() { int arr[...原创 2018-09-29 17:04:06 · 233 阅读 · 0 评论
分享