我想在java中編寫一個簡單的方法來執行int []上的快速排序,但我總是收到一個在結果中不合適的值。無法完美實現QuickSort
任何幫助瞭解我要去哪裏錯將不勝感激。以下是我的代碼:
public static void quickSort(int[] arr, int left, int right){
if (left < right){
int p = partition(arr, left, right);
quickSort(arr, left, p-1);
quickSort(arr, p+1, right);
}
}
public static int partition(int[] arr, int left, int right){
int pivot = arr[left];
int l = left+1;
int r = right;
while (l < r){
while (l<right && arr[l] < pivot){
l++;
}
while (r>left && arr[r] > pivot){
r--;
}
if (l < r){
int temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
}
arr[left] = arr[r];
arr[r] = pivot;
return r;
}
如果'right'等於'left + 1'會怎麼樣?這兩個元素交換時沒有任何密鑰比較。 (哦,如果主鍵在arr [left]裏直到循環之後,比較'r> left'是多餘的。) – greybeard