快速排序理解

在这里插入图片描述

快速 排序 的核心 思想就是:

每次处理好 某个 标杆 数字 在 最终 数组 中的位置。
然后 每个 数字 依次 作为标杆数,都找到 自己的 位置。

相比 冒泡排序
冒泡 是每次找 最大数字的 位置,找好后 ,在 不包含最大 数字的 数组中,再 次找 当前最大数的 位置。

快速 排序 是 找 指定 标杆数 的位置。
标杆数 可以是任意一个数字。 一般取 最左或最右的 那个数字作为标杆数。

1.标杆数

快速排序,就是先选定一个数作为标杆数,这里选的是最后一个数字。
然后从这个数字之外 去考虑。

2. 左小,右大

这里从小到大 来排序。

这个数字之外的 数列,从左,右 两头开始。 左右分界线左后确定
左边的数字要 小于这个数 就算符合要求。 也就是 左小
右边的数字要 大于这个数 就算符合要求。 也就是 右大

3.用右小数替换 左大数,使得符合 某个位置 左小右大

然后先从左往右看,找到第一个大于这个标杆数 的数字,这是一个不满足 要求的数字,称为 左大数。需要处理掉,使其符合要求,变为 左小。

就是 找符合条件的数字 来换掉 不符合 条件的 数字。
处理的方式 一般只有 换掉 左大数 这种方法 最合适。

那么找哪个数字来换掉呢??

首先确定拿来替换的 数字 必定要满足 左小。

也就是必定 用 左小 来换掉 左大数

那么替换这个 左大数 的数字最好也是一个不符合 他自己占位要求的数字,
这么 替换后 相当于同时解决了 两个问题。

所以 考虑到 右边 需要的数字是 右大 ,那么可以 找一个 右小。

用 右小 来 替换 左大。
使得 左大 变为 左小,右小 变为 右大。

4. 最终目的

目的就是 对于某个位置,使得
其左边的数字都小于 标杆数
其右边的数字都大于 标杆数。
然后把 标杆数 放到这个位置。

这样标杆数 就找到了 自己的 正确位置。
标杆数的 位置 就不会 再发生变化。
在最终排序好后的 有序数列 中,他依然是 那个位置。

5

.对 标杆数 两测 依次 进行 同样的 处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值