快速排序算法中的一些小细节

选定基准值后,开始进行查找时的查找顺序(升序):
如果基准值选取最左边的元素(low),那么查找顺序应该先从右往左(high-low),再从左往右(low-high);
类似的,如果基准值选取最右边的元素(high),那么查找顺序应该先从左往右(low-high),再从右往左(high-low);

原因(第一种情况)如果查找顺序先是先从左往右(low-high)的话,会出现比基准值大的元素和基准值交换的情况。如序列:1,4,5,3,2 ;指针先从左往右(low-high)寻找大于1的元素,会停在元素4这个位置,然后从右往左(high-low)寻找小于1的元素,指针也会停在元素4这个位置(指针相遇就不会再往前寻找),所以此时会把元素4和基准值1交换,导致基准值置位错误。

总结:**(以上情形)**要保证基准值置位正确就要保证相遇点的元素值小于基准值,所以查找顺序必须先从右往左(high-low),再从左往右(low-high)。其余情形以及降序的情况由此可类推。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值