排序算法总结
排序算法的稳定性
稳定排序算法会将相等的元素值维持其相对次序。如果一个排序算法是稳定的,当有两个相等的元素 R 和 S,且在原本的列表中 R 出现在 S 之前,那么在排序过的列表中 R 也将会是在 S 之前。

算法复杂度以及稳定性比较
| 排序算法 | 最好时间复杂度 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 是否稳定 |
|---|---|---|---|---|---|
| 冒泡排序 | \(O(n)\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 是 |
| 选择排序 | \(O({n^2})\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 不是 |
| 直接插入排序 | \(O(n)\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 是 |
| 归并排序 | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n)\) | 是 |
| 快速排序 | \(O(n\log n)\) | \(O(n\log n)\) | \(O({n^2})\) | 最好:\(O(\log n)\) 最差:\(O(n)\) | 不是 |
| 希尔排序 | \(O(n)\) | \(O({n^{1.3}})\) | \(O({n^2})\) | \(O(1)\) | 不是 |

浙公网安备 33010602011771号