Я пытаюсь написать простой метод в java, который будет выполнять quicksort по 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'? Эти два элемента обмениваются без какого-либо ключевого сравнения. (О, и сравнение 'r> left' является избыточным, если ось остается в' arr [left] 'до тех пор, пока цикл не будет.) – greybeard