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

对于一个数组,起始为lo,结束为hi,轴点为pivot。通过每次选取不同的轴点,将轴点移动至某一位置,使得满足下述条件。
那么如何分呢?重点在于寻找轴点轴点需要满足的条件:其左侧元素都比其小,右侧元素都要比其大。如下图:

那么,快速排序就是使得所有元素逐个转换为轴点pivot,那么如何找到/构造这个轴点呢?
构造轴点
- 任取一个数组元素设置为候选轴点pivot,那就随意点---选择a[0]
- 中段U初始化为全集;比轴点小者归为前缀L,U左边界收缩;比轴点大者归为后缀G,U右边界收缩。
<

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

被折叠的 条评论
为什么被折叠?



