推广 热搜: 百度  搜索引擎  企业  可以  选择  使用  上海  技术  page  机械设备 

快速排序详解:原理、优化与归并比较

   日期:2025-01-03     作者:8gels    caijiyuan  
核心提示:快速排序从程式上看起来和归并排序特别像,都采取了递归分治的思想,将数据逐步分解。快排首先在序列中选定某一个枢

快速排序从程式上看起来和归并排序特别像,都采取了递归分治的思想,将数据逐步分解。快排首先在序列中选定某一个枢轴(pivot,然后将除枢轴位置的数据与枢轴数据比较,大于的放在右边,小于的放在左边,然后分两边再次递归,直到递归数据个数趋为1,这样数据就排好序了。

 
 
  1. 稳定性:快排不是稳定的排序算法,快排的插入与交换取决于枢轴点的选取,比如说8,6,8,1,5,3这个数组,在第一轮的分区中第一个8就会排到第二个8后面,所以快排不是稳定的排序算法

2.空间复杂度:单单通过算法就能看出并没有像归并那样额外申请内存,仅仅只需要在同个数组内完成,因此为O(1),属于原地排序算法

3.时间复杂度:因为采用了与归并类似的思想,假设数组每次都能完美拆分为两个对半的,这样的时间复杂度即为O(nlogN),但是枢轴值的选取倘若很极端,极端到每次的选择要么为最大值,要么为最小值,就相当于冒泡排序那样,就会退化成为O(n²

  1. 在上面的时间复杂度分析中,可以看出快排的时间复杂度并不稳定,造成这个结果的原因就是主要因为枢轴值的选择,因此对枢轴值选择的优化颇为重要,比如说三数取中,九数取中,尽量扩大采样数据的范围,这样才能优化枢轴值的选择
  2. 当我们在递归到某个深度的时候,数据规模较小,此时插入排序的性能可能比快排的性能还要好,则可以设置一个阈值,切换排序算法的实现,这样也能提高效率
  1. 归并直接首先直接二分分区,落井下石到最底层才开始执行合并排序的操作归并由下到上
    快排首先会确定位置再分区,然后递归,随着中间位置点的越分越多,数据的序列性表现的越明显,快排由上到下

  2. 归并的空间复杂度比快排高,尤其在大量数据面前,归并的内存占用相当可怕

  3. 快排的时间复杂度并不如归并的稳定

本文地址:http://ww.kub2b.com/tnews/4965.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类生活信息

文章列表
相关文章
最新动态
推荐图文
生活信息
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号