2016-04-22 81 views
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]); 
     } 
    } 
} 
} 
+2

將一個print語句放入'if block'中以檢查是否滿足條件。 –

+4

可能的重複:http://stackoverflow.com/questions/20355634/quicksort-infinite-loop-if-there-are-repeating-values – Nier

+0

是的,這就是它似乎是。當值相同時,它會繼續打印。奇怪的是它很少發生在調試器中,從來沒有經常運行它。 –

回答

0

這是一個數字相同的問題,我必須爲該條件編寫代碼。多謝你們。