拥有数据结构与算法标签的文章

字符串匹配算法 Sunday

Sunday算法是从前往后匹配,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符: 如果该字符没有在主模式字符串中出现则跳过,移动位 = 匹配字符串长度 + 1 该字符在主模式字符串中出现, 1)移动位 = 该字符在模式串中最后出现位置距末端长度 + 1 2)移动位 = 模式串长度 - 该字符在模式串中最后出现位置
阅读全文

二分查找

二分查找是从一组有序数组中查找某特定元素,搜索过程是从中间开始查找,如果中间值非查找元素,那么从小于或大于中间元素的一半数组中查找,一样是从中间开始匹配
阅读全文

冒泡排序

冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
阅读全文

快速排序

步骤为: 从数列中挑出一个元素,称为“基准”(pivot), 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分割结束之后,该基准就处于数列的中间位置。这个称为分割(partition)操作。 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归到最底部时,数列的大小是零或一,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它
阅读全文

归并算法

归并算法采用分治法:1: 把长度为 n 的 array 分成两半。3: 把左半边 array 及右半边 array 分别以 Merge Sort 进行 sorting。 (recursive)3: merge 左半边及右半边 sorted array。
阅读全文

选择排序

选择排序过程:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
阅读全文