摘要:
快速排序有普适性、原地算法节省空间的优秀特质,当使用「三点取中」和「随机法」降低快排时间复杂度的退化概率后,快排在底层的排序实现中成为广泛应用的算法。
为何是快排
排序算法多种多样,在之前章节中我们已经学习了常见的几种排序算法,各有特点,我们先对它们进行执行效率的比较。
算法名称 | 时间复杂度 | 是否原地 | 是否稳定 |
---|---|---|---|
冒泡排序 | O ( n 2 ) O(n^2) O(n2) | ✔️ | ✔️ |
插入排序 | O ( n 2 ) O(n^2) O(n2) | ✔️ | ✔️ |
选择排序 | O ( n 2 ) O(n^2) O(n2) | ✔️ | ❌ |
归并排序 | O ( n log ( n ) ) O(n\log\left(n\right)) O(nlog(n)) | ❌ | ✔️ |
快速排序 | O ( n log ( n ) ) O(n\log\left(n\right)) O(nlog(n)) | ✔️ | ❌ |
桶排序 | O ( n ) O(n) O(n) | ❌ | ✔️ |
计数排序 | O ( n ) O(n) O |