image.png
总结:
image.png
tips:一般来说选快排,虽然量级上跟归并和堆一样,但是实验证明常数项低。

稳定性解释:

稳定:
基于桶的排序入桶顺序和出桶顺序一致。
不稳定的解释:
关键看swap发生的时候
1、选择排序为什么不稳定?
例子:11332,当遍历到第一个3时,将后面的2 跟他交换, 两个3改变了次序关系image.png
2、快速排序为什么不稳定?
例子:11332 当进行荷兰国旗过程的时候,如果选择的pivot是最后这个2,那么最后一步将2和3交换,也会造成次序颠倒。
image.png
image.png

3、堆排序为什么不稳定?
同样的例子11332, 首先将这个数组变成大根堆,第一个3首先放到堆顶,并和最后的元素互换,那么这个3跑到最后,和另一个3改变了次序。
如果在构建堆的时候用O(N)的调整策略,没找到这个例子啊,奥,简单的111, 那么第一个数就直接输出到最后了。
所以说目前没有找到时间复杂度为OlogN,空间复杂度为O(1),满足稳定性的排序。
左程云: 堆拍很轻易的破坏稳定性。
image.png

用途:

1、基础类型没什么用,对一些复杂对象排序有用。所以Arrays.sort() 主要利用 的是归并排序。但不绝对。因为里面也有快拍的代码;
image.png
左程云P5链表:系统提供的Arrays.sort()判断用户输入,如果是基础类型,给你用快排,否则给你用归并,为什么?稳定性。
2、
image.png
当样本量小于60的时候直接用插入排序。
image.png

常见的坑:

image.png
最后一问: 要求原地改变,时间复杂度O(N),空间复杂度O(1)。荷兰国旗问题,不稳定。
0~1 标准题目等价。0-1标准指分成两部分的patition问题。