个人理解:关于啊哈算法里面快速排序为什么从右边开始

书上没写 我自己想了想 简单说下吧
快速排序 使得基准数左边全是小于基准数 右边全是大于基准数
主要是基准数 是取左边第一个的
先说左边开始为什么不可以
在这里插入图片描述
就像上面的这个例子:
按左边开始会发生什么? 结果应该是7和6交换了
如果循环结束 i!=j
那么基准值就会覆盖到left的位置 问题来了 如果right位置j>i(就是执行了左边的查找后,右边的找不到了)呢 left所在位置的值就是比基准值大 因为没和right交换
所以就是说 循环结束前 left找到的left必须要和右边right进行交换 否则就会产生这种结果
那么我们就直接先找到right的位置(右边开始) 如果找得到的话,那么right所在位置的值必然比基准值小,就算循环结束,第一个位置也会放入right所在位置的值,为什么?因为left<right 所以必须从右边开始
看着下面代码 应该很清楚了
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值