基数选在左边 也就是
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 版权协议,转载请附上原文出处链接和本声明。