快速排序 升序要从右开始的原因

  • Post author:
  • Post category:其他


基数选在左边 也就是

6

这里写图片描述



正确:从右往左选小的,从左往右选大的交换

从右选到2,从左碰到i=j,所以交换26,->21679

错误:从左往右选大的,从右往左选小的

从右选到7,从左没有比6小的,碰到i=j,交换67,->71269  出错!

所以要从右边开始,也就是从基准数的对面开始。

while (nums[j] >= index && j > i) {
    j--;
}

while (nums[i] <= index && i < j) { 
    i++; 
}



降序:从左往右选小的,从右往左选大的



版权声明:本文为veritasalice原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。