首页 > 技术文章 > 渐进最优排序

mo-jian-ming 2020-10-15 18:58 原文

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

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

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

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


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

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

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

都是nlogn的时间复杂度

推荐阅读