一、时间复杂度
时间复杂度 | 算法 |
O(n^2) | 冒泡排序、选择排序、插入排序 |
O(n*logn) | 归并排序、快速排序、堆排序、希尔排序 |
O(n) | 基数排序、计数排序 |
二、空间复杂度
时间复杂度 | 算法 |
O(1) | 冒泡排序、选择排序、插入排序、堆排序、希尔排序 |
O(logn)~O(n) | 快速排序 |
O(n) | 归并排序 |
O(m)(m是桶的数量) | 基数排序、计数排序 |
三、稳定性
稳定性 | 算法 |
稳定 | 冒泡排序、插入排序、归并排序、基数排序、计数排序 |
不稳定 | 选择排序、快速排序、堆排序、希尔排序 |
选择排序反例 [2,2,2,1]
堆排序[2,2,2]
快速排序[4,2,2,2,5]随机选中中间的2作为划分值
希尔排序[5,1,1,5]步长为2
四、补充说明
1.算法无绝对优劣。
2.快速排序的快速指的是它的常量系数低。
3.工程中的排序算法是综合排序,根据情况选择算法。
五、总结
算法 | 时间复杂度 | 空间复杂度 | 稳定性 |
冒泡排序 | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(1) | 不稳定 |
插入排序 | O(n^2) | O(1) | 稳定 |
归并排序 | O(n*logn) | O(n) | 稳定 |
快速排序 | O(n*logn) | O(logn)~O(n) | 不稳定 |
堆排序 | O(n*logn) | O(1) | 不稳定 |
希尔排序 | O(n*logn) | O(1) | 不稳定 |
计数排序 | O(n) | O(m) | 稳定 |
基数排序 | O(n) | O(m) | 稳定 |