今天,笔者为大家带来了10大常用排序算法的相同点与不同点的总结。
话不多说,上表:
算法 | 平均时间复杂度 | 最优时间复杂度 | 最差时间复杂度 | 空间复杂度 | 特点 | 是否稳定 |
---|---|---|---|---|---|---|
冒泡 | O(n2) | O(n) | O(n2) | O(1) | 对有序性较为敏感 | 稳定 |
选择 | O(n2) | O(n2) | O(n2) | O(1) | 交换次数少 | 不稳定 |
直插 | O(n2) | O(n) | O(n2) | O(1) | 适合已经有序的序列 | 稳定 |
希尔 | O(nlogn) | O(nlogn) | O(nlog2n) | O(logn) | 引入增量以提高速度 | 不稳定 |
快排 | O(nlogn) | O(nlogn) | O(n2) | O(logn) | 综合性能最强 | 不稳定 |
归并 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 空间换时间 | 稳定 |
堆 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 利用堆结构 | 不稳定 |
计数 | O(n+k) | O(n+k) | O(n+k) | O(k) | 空间换时间 | 稳定 |
桶 | O(n+k) | O(n+k) | O(n2) | O(n+k) | 空间换时间 | 稳定 |
基数 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 空间换时间 | 稳定 |