我试图在 java 中编写一个简单的方法来对 int[] 执行快速排序,但我总是得到一个在我的结果中不合适的值。
如果能帮助我理解哪里出了问题,我们将不胜感激。下面是我的代码:
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;
}
最佳答案
您的代码是完美的,但请务必为方法 quickSort 提供正确的值。
int[] arr = .....;
int left = 0;
int right = arr.length - 1;
public static void quickSort(int[] arr, int left, int right){
关于java - 无法完美实现QuickSort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789082/