| 排序方法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
|---|---|---|---|---|---|
| 冒泡排序 | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 稳定 |
| 选择排序 | $O(n^2)$ | $O(n^2)$ | $O(n^2)$ | $O(1)$ | 不稳定 |
| 插入排序 | $O(n^2)$ | $O(n^2)$ | $O(n)$ | $O(1)$ | 稳定 |
| 希尔排序 | $O(n \log n)$ | $O(n^2)$ | $O(n \log n)$ | $O(1)$ | 不稳定 |
| 归并排序 | $O(n \log n)$ | $O(n \log n)$ | $O(n \log n)$ | $O(n)$ | 稳定 |
| 快速排序 | $O(n \log n)$ | $O(n^2)$ | $O(n \log n)$ | $O(\log n)$ | 不稳定 |
| 堆排序 | $O(n \log n)$ | $O(n \log n)$ | $O(n \log n)$ | $O(1)$ | 不稳定 |
| 计数排序 | $O(n + k)$ | $O(n + k)$ | $O(n + k)$ | $O(n + k)$ | 稳定 |
| 桶排序 | $O(n + k)$ | $O(n^2)$ | $O(n + k)$ | $O(n + k)$ | 稳定 |
| 基数排序 | $O(n \times k)$ | $O(n \times k)$ | $O(n \times k)$ | $O(n + k)$ | 稳定 |
注意:
-
$n$:数据规模
-
$k$:桶的数量(计数排序中为最大值范围,基数排序中为位数)
-
快速排序空间复杂度为递归造成的栈空间的使用,平均为 $O(\log n)$,最坏为 $O(n)$
-
希尔排序的时间复杂度依赖于增量序列,此处给出的是常见增量序列的复杂度
| 排序方法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
|---|---|---|---|---|---|
| 冒泡排序 | |||||
| 选择排序 | |||||
| 插入排序 | |||||
| 希尔排序 | |||||
| 归并排序 | |||||
| 快速排序 | |||||
| 堆排序 | |||||
| 计数排序 | |||||
| 桶排序 | |||||
| 基数排序 |