0
我編碼在Java中的快速排序,我已經完成了分區部分,但出於某種原因,我的程序保持與運行下去:無限while循環中快速排序
x was swapped with x
其中x是一些隨機整數,但每次打印時都是相同的整數。我試圖調試這個,但它在調試器中每次都運行良好。我究竟做錯了什麼?這裏是我的代碼,不包括父類,數組生成器等。
class QuickSort extends BasicSort {
public QuickSort() {
super("QuickSort");
}
public void sort() {
int pivot = data[data.length/2];
int low = 0, high = data.length - 1;
while (true) {
while (low < (data.length - 1) && data[low] < pivot) {
System.out.println(data[low] + " is less than " + pivot);
low++;
}
while (high > 0 && data[high] > pivot) {
System.out.println(data[high] + " is greater than " + pivot);
high--;
}
if (low >= high) {
break;
} else {
int temp = data[low];
data[low] = data[high];
data[high] = temp;
System.out.println(data[low] + " was swapped with " + data[high]);
}
}
}
}
將一個print語句放入'if block'中以檢查是否滿足條件。 –
可能的重複:http://stackoverflow.com/questions/20355634/quicksort-infinite-loop-if-there-are-repeating-values – Nier
是的,這就是它似乎是。當值相同時,它會繼續打印。奇怪的是它很少發生在調試器中,從來沒有經常運行它。 –