快速排序的思考与改进

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

猜你喜欢

转载自www.cnblogs.com/teipiper/p/12244165.html
今日推荐