首页 > 编程语言 > 详细

快速排序的思考与改进

时间:2020-01-30 23:28:02      阅读:95      评论:0      收藏:0      [点我收藏+]

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

快速排序的思考与改进

原文:https://www.cnblogs.com/teipiper/p/12244165.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!