一、总结
- 三种排序算法得时间复杂度都是O(nlogn) (存在常数之间的差异)
- 一般情况下,就运行时间而言:快速排序 < 归并排序 < 堆排序
- 三种方法的缺点:
- 快速排序:极端情况下排序效率低
- 归并排序:需要额外的内存开销
- 堆排序:在快的排序算法中相对较慢
递归需要消耗空间,因为快速排序采用递归,因此其空间复杂度平均为logn(递归走logn层),当遇到最坏情况为n(当为倒序的情况)
稳定性指的是:当两个元素的数值一样的时候,保证他们之间的相对位置不变。
例如对一个列表[3,2,1,2,4]排序,排序之后第一个2还位于第二个2的前面。
或者有一组字典:分别位于第1,2,3行
{'name':’a‘, 'age':'18'}
{'name':’b‘, 'age':'20'}
{'name':’a‘, 'age':'25'}
现在根据年龄对其排序,如果是有序的排序则:
{'name':’a‘, 'age':'18'}
{'name':’a‘, 'age':'25'}
{'name':’b‘, 'age':'20'}
需要保证两个a年龄之间的距离保持不变。
有顺序的挨个交换位置的排序(比较排序),都为稳定排序。