kmp

算法书上使用的是 有限状态机 来描述的 kmp 算法。

之前学习的是通过前后缀匹配的方式来做的 kmp 算法。

现在记录一下。

参考:阮一峰 blog

阅读更多

sort

排序算法

简单实现了一下几种常见的内排序算法

  • 希尔排序
  • 归并排序
  • 快速排序
  • 堆排序
  • 基数排序
  • 桶排序
排序算法 平均执行效率 稳定性 备注
插入排序 o(n^2) 稳定 我觉得这个稳定性取决于实现的时候的停止条件
冒泡排序 o(n^2) 稳定
选择排序 o(n^2) 非稳定 因为选择最小 or 最大元素交换的时候回改变原来的顺序
希尔排序 o(nlogn) 稳定 希尔排序是一个根据步长的来的插入排序
快排 o(nlogn) 非稳定 分治的方法,递归的处理子数组,每次寻找到一个数字的位置
堆排序 o(nlogn) 非稳定 用大顶堆 or 小顶堆实现,调整堆的有序性需要 logn 的时间
归并排序 o(nlogn) 稳定 使用分治,每次合并两个已经有序的数组
阅读更多