码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序的思考与改进

时间:2020-01-30 22:50:34      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:保留   快排序   思考   分时   复杂   数据   个数   quicksort   归并   

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

快速排序的思考与改进

标签:保留   快排序   思考   分时   复杂   数据   个数   quicksort   归并   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!