渐进最优排序

快排:由一个基准元素,把序列分解为三部分,
大于基准,等于基准,小于基准。
然后对前后子集进行排序,
最后三部分依次合并。

关键在于如何选择基准元素,可随机,也可前中后元素选择中位数

不用递归,可以开辟堆栈,最大空间O(n),

如果按左右子集个数少的后进栈先排序,空间可变O(logn)


合并:直接划分平均两个部分,递归排序,各自有序,最后合并。

关键在于如何合并子序列,两个数组,各自游标依次对比。

不用递归,可以把元素组中大于1且有序的子集看出独立,然后两两合并。

都是nlogn的时间复杂度

原文地址:https://www.cnblogs.com/mo-jian-ming/p/13822313.html