这个只是一个简单的总结,便于对比和查看
类型 | 是否稳定 | 最好 | 平均 | 最坏 | 具体实现 |
---|---|---|---|---|---|
直接插入排序 | 稳定 | O(n) | O(n2) | O(n2) | 查看 |
Shell排序 | 不稳定 | O(n1.3) | O(nlog2n) | O(2) | 查看 |
直接选择排序 | 不稳定 | O(n) | O(n2) | O(n2) | 查看 |
堆排序 | 不稳定 | O(nlog2n) | O(nlog2n) | O(nlog2n) | 查看 |
冒泡排序 | 稳定 | O(n) | O(n2) | O(n2) | 查看 |
快速排序 | 不稳定 | O(nlog2n) | O(nlog2n) | O(n2) | 查看 |
归并排序 | 稳定 | nlog(2n) | nlog(2n) | nlog(2n) | 查看 |
上面的各种排序算法,各有优劣;根据具体情况来判断使用哪种排序算法;
可以参考:
- 对数据稳定性的要求
- 数据的特点(完全随机,还是近乎排序好的)
- 对时间复杂度的要求
- 对容错性的要求