
算法
jnu_yanchen
这个作者很懒,什么都没留下…
展开
-
字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容转载 2014-11-10 16:17:00 · 367 阅读 · 0 评论 -
快速排序
快速排序转载 2017-12-15 14:26:30 · 201 阅读 · 0 评论 -
冒泡排序
// 这种类别的算法在实际中很少使用到,因为效率低下,但在理论教学中常常提到 冒泡排序效率非常低,效率还不如插入排序。数据量大时效率低,对于顺序颠倒的序列效率最低。算法流程:简单概括就是每次找到序列中最大或最小的元素排到最后面去,循环知道每个元素都处于正确位置Best:n Average:n^2 Worst:n^2 Memory:1 Stable:Yesvoid BubbleSor转载 2017-12-15 14:32:20 · 212 阅读 · 0 评论 -
选择排序和插入排序
/*有两种简单排序算法分别是插入排序和选择排序,两个都是数据量小时效率高。 实际中插入排序一般快于选择排序,由于更少的比较和在有差不多有序的集合表现更好的性能。 但是选择排序用到更少的写操作,所以当写操作是一个限制因素时它被使用到*/ 算法:将数组分为两部分,一部分是已经排好顺序的,另一部分是未排序的。每次找数组后半部分中最小的一个元素排到前面的序列。//选择排序 Best:n^2 Aver转载 2017-12-15 14:37:49 · 276 阅读 · 0 评论 -
归并排序
十一种排序算法//算法逻辑:1. 将列表分为n个子列表,每一个列表只包含一个元素 2. 反复地归并子列表成一个新的有序列表,直到只剩下一个子列表 Best:nlogn Average:nlogn Worst:nlogn Memory:n worst case Stable:Yes // 归并排序中的合并算法void Merge(int array[], int start, in转载 2017-12-15 14:43:36 · 252 阅读 · 0 评论 -
shell排序
shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序, 然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少 量的比较和移动就可以完成对序列的排序了。Best:n Average: nlong^2n or n^(3/2) Worst: Depends on gap se转载 2017-12-15 14:47:17 · 300 阅读 · 0 评论 -
二分查找及递归
原博客#include<iostream>#include<stdlib.h>using namespace std;int BinarySearch(int arry[],int len,int value){ if(arry==NULL||len<=0) return -1; int start=0; int end=len-1; while(转载 2017-12-15 14:54:35 · 293 阅读 · 0 评论