返回信息流public static void quickSort2(int[] pData, int left, int right) {
int i, j;
int middle, temp;
i = left;
j = right;
middle = pData[left];
while (true) {
while ((++i) < right - 1 && pData[i] < middle)
;
while ((--j) > left && pData[j] > middle)
;
if (i >= j)
break;
temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}
pData[left] = pData[j];
pData[j] = middle;
if (left < j)
quickSort2(pData, left, j);
if (right > i)
quickSort2(pData, i, right);
}
调用int[] data2 = { 49, 38, 65, 97, 76, 13, 27 };
quickSort2(data2, 0, data2.length - 1);
System.out.println(Arrays.toString(data2));
输出:
[13, 38, 49, 65, 76, 97, 27]
改变排序数组,发现总是最后一个数组元素没有参与到排序中:
例如改变数组为{ 49, 38, 65, 97, 76, 13, 27,21 }
则输出
[13, 27, 38, 49, 65, 76, 97, 21]
为什么呢
这是一条镜像帖。来源:北邮人论坛 / java / #12460同步于 2009/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
快速排序出错
bylijinnan
2009/11/28镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
quickSort2(data2, 0, data2.length - 1);
改为
quickSort2(data2, 0, data2.length);
很明显最后一个数没排
果然是。。
我怎么就没发现呢
谢谢哇
【 在 azdhero 的大作中提到: 】
: quickSort2(data2, 0, data2.length - 1);
: 改为
: quickSort2(data2, 0, data2.length);
: ...................