快速排序的思考与改进

Posted teipiper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序的思考与改进相关的知识,希望对你有一定的参考价值。

partition()时间复杂度为O(n),quicksort的划分速度为O(logn),快排的排序时间改进主要取决于递归的深度,也即划分的平均程度,主要受:1.元素重复个数;2.元素的有序程度。
元素过多重复时:试想有10000个元素,取值范围为(1,10),在划分时划分后的两段在总体上都会有较大的悬殊,影响着排序时间,两路归并把重复元素分到段,而三路归并把重复元素单独保留到中间一段
元素基本有序时,需要随机地取划分元素,否则快排时间复杂度会退化到O(n^2),这是因为此时递归地深度接近n
在r-l比较小时,已有较多元素在其排序后应在的位置上,数据元素基本有序了,此时采用插入排序可以进一步加快排序速度:插入排序在基本有序的条件下,有较好的表现,时间复杂度近似O(n)

以上是关于快速排序的思考与改进的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序与快速排序

Java快速排序

Java快速排序

Java快速排序

快速排序的改进

冒泡排序与快速排序