小结
排序算法的比较
算法 | 稳定性 | 时间复杂度 | 空间复杂度 |
---|---|---|---|
选择排序 | 不稳定 | O(N*N) | O(1) |
冒泡排序 | 稳定 | O(N*N) | O(1) |
插入排序 | 稳定 | O(n)-O(N*N) | O(1) |
归并排序 | 稳定 | O(NlogN) | O(n) |
快速排序 | 不稳定 | O(NlogN) | O(logn) |
堆排序 | 不稳定 | O(NlogN) | O(1) |
桶排序 | 稳定 | O(N) | O(N) |
快速排序是最快的通用排序算法,因为它的常数项比其他算法都要小。
系统排序方法:
Java 主要排序方法为 java.util.Arrays.sort(),该排序是一个插入排序,当数量级大于60时,如果是对原始数据进行排序,就使用快速排序,如果是对引用类型那么使用归并排序(原因是归并排序稳定)。