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