排序算法
0. 各种排序算法对比
算法 | 平均时间复杂度 | 空间复杂度 | 稳定性 |
---|---|---|---|
冒泡排序 | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(1) | 不稳定 |
快速排序 | O(nlogn) | O(logn) | 不稳定 |
插入排序 | O(n^2) | O(1) | 稳定 |
归并排序 | O(nlogn) | O(n) | 稳定 |
希尔排序 | O(n^3/2) | O(1) | 不稳定 |
基数排序 | O(nlog®n),r为基数,m为堆数 | O(r) | 稳定 |
堆排序 | O(nlogn) | O(1) | 不稳定 |
- 在JavaScript内置的API中提供了sort(),在V8引擎中,sort()中使用了两种方式实现排序,插入排序和快速排序,在数据量小的时候(数组长度小于10)使用插入排序,数据量大的时候使用快速排序。Mozilla/Firefox中使用了归并排序。
- 希尔排序是进阶版的插入排序,是第一个时间复杂度突破O(n^2)的排序算法。