快速排序+改进版(邓俊辉老师讲授)

快速排序是一种分而治之的算法,重点在于如何分。文章介绍了如何找到轴点并构造轴点,通过选取数组元素作为候选轴点,逐步调整使得轴点左侧元素小于轴点,右侧元素大于轴点。文章还讨论了算法的最好和最坏情况,并提出改进策略,将数组分为四个部分,优化了轴点的选取和移动方式,确保排序效率。
摘要由CSDN通过智能技术生成

 

快速排序是另一个分而治之排序算法。归并排序的重点在于合并,快速排序的重点在于分。(红色为每一次选取的候选轴点)

对于一个数组,起始为lo,结束为hi,轴点为pivot。通过每次选取不同的轴点,将轴点移动至某一位置,使得满足下述条件。

那么如何分呢?重点在于寻找轴点轴点需要满足的条件:其左侧元素都比其小,右侧元素都要比其大。如下图:

那么,快速排序就是使得所有元素逐个转换为轴点pivot,那么如何找到/构造这个轴点呢?

构造轴点

  1. 任取一个数组元素设置为候选轴点pivot,那就随意点---选择a[0]
  2. 中段U初始化为全集;比轴点小者归为前缀L,U左边界收缩;比轴点大者归为后缀G,U右边界收缩。

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值