排序算法总结对比

0.十大经典排序算法

1.排序算法分类

非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。

线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。

2.时间 / 空间复杂度对比

算法名称  时间复杂度   空间复杂度 排序方式  稳定性 
最佳 平均 最差 最差
冒泡排序(BubbleSort) O(n) O(n^2) O(n^2) O(1) In-place 稳定
选择排序(SelectionSort) O(n^2) O(n^2) O(n^2) O(1) In-place 不稳定
插入排序(InsertionSort) O(n) O(n^2) O(n^2) O(1) In-place 稳定
希尔排序(ShellSort) O(n) O((nlog(n))^2) O((nlog(n))^2) O(1) In-place 不稳定
归并排序(MergeSort) O(nlog(n)) O(nlog(n)) O(nlog(n)) O(n) Out-place 稳定
快速排序(QuickSort) O(nlog(n)) O(nlog(n)) O(n^2) O(log(n)) In-place 不稳定
堆排序(HeapSort) O(nlog(n)) O(nlog(n)) O(nlog(n)) O(1) In-place 不稳定
计数排序(CountSort) O(n+k) O(n+k) O(n+k) O(k) Out-place 稳定
桶排序(BucketSort) O(n+k) O(n+k) O(n^2) O(n) Out-place 稳定
基数排序(RadixSort) O(nk) O(nk) O(nk) O(n+k) Out-place 稳定

名词解释:

  • n: 数据规模
  • k: “桶”的个数
  • In-place: 所有排序操作都在内存中完成
  • Out-place: 由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行
  • 稳定性:假设在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则称这种排序算法是稳定的;否则称为不稳定的。
posted @ 2019-08-10 21:10  猫不夜行  阅读(233)  评论(0编辑  收藏  举报