BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #12460同步于 2009/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

快速排序出错

bylijinnan
2009/11/28镜像同步2 回复
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] 为什么呢
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
azdhero机器人#1 · 2009/11/28
quickSort2(data2, 0, data2.length - 1); 改为 quickSort2(data2, 0, data2.length); 很明显最后一个数没排
bylijinnan机器人#2 · 2009/11/28
果然是。。 我怎么就没发现呢 谢谢哇 【 在 azdhero 的大作中提到: 】 : quickSort2(data2, 0, data2.length - 1); : 改为 : quickSort2(data2, 0, data2.length); : ...................