常用排序算法的性能
常用排序算法的性能
| 算法 | 平均时间复杂度 | 最好情况 | 最差情况 | 空间复杂度 | 排序方式 | 稳定性 |
|---|---|---|---|---|---|---|
| 冒泡排序 | O(n2)O(n2) | O(n)O(n) | O(n2)O(n2) | O(1)O(1) | in-place | 稳定 |
| 选择排序 | O(n2)O(n2) | O(n2)O(n2) | O(n2)O(n2) | O(1)O(1) | in-place | 不稳定 |
| 插入排序 | O(n2)O(n2) | O(n)O(n) | O(n2)O(n2) | O(1)O(1) | in-place | 稳定 |
| 希尔排序 | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(n2)O(n2) | O(1)O(1) | in-place | 不稳定 |
| 归并排序 | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(n)O(n) | out-place | 稳定 |
| 快速排序 | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(n2)O(n2) | O(n)O(n) | in-place | 不稳定 |
| 堆排序 | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(nlogn)O(nlogn) | O(1)O(1) | in-place | 不稳定 |
| 计数排序 | O(n+k)O(n+k) | O(n+k)O(n+k) | O(n+k)O(n+k) | O(k)O(k) | out-place | 稳定 |
| 桶排序 | O(n+k)O(n+k) | O(n+k)O(n+k) | O(n2)O(n2) | O(n)O(n) | out-place | 稳定 |
| 基数排序 | O(nk)O(nk) | O(nk)O(nk) | O(nk)O(nk) | O(n+k)O(n+k) | out-place | 稳定 |
我们日常用的最多的可能是快速排序和堆排序,这两个算法都是性能很高的排序算法,缺点是不稳定。
TimSort 算法性能比快速排序和堆排序还高,且是稳定排序算法。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Web304030!
