/ L'implementazione di / quicksort non funziona come previsto - java, quicksort

l'implementazione quicksort non funziona come previsto: java, quicksort

Ho provato a implementare quicksort in Java ma non funziona. Non ho idea di dove sia andato storto. Ecco quello che ho finora:

 public static void quicksort(int[] array, int left, int right) {
if (left >= right) {
return;
}
int pivot = new SplittableRandom().nextInt(right - left) + left;
int pivotValue = array[pivot];
int i = left;
int j = right;
int buffer;
while (i < j) {
if (array[i] > pivotValue) {
if (array[j] < pivotValue) {
buffer = array[i];
array[i] = array[j];
array[j] = buffer;
} else {
j--;
}
} else {
i++;
}
}
array[pivot] = array[i];
array[i] = pivotValue;
quicksort(array, left, i-1);
quicksort(array, i+1, right);
}

risposte:

0 per risposta № 1

È più semplice con un esempio e ancora più semplice con un semplice esempio.

int[] myArray = { 1, 0 };
YourClass.quicksort(myArray, 0, myArray.length - 1);

Supponiamo ora che il tuo metodo selezioni pivot 0, quindi pivotValue 1. Ora prova a capire in che modo il tuo metodo prende la prima iterazione di while ciclo continuo. Quindi, qual è il valore di i dopo quella iterazione? Cosa succede dopo? Se riesci a rispondere a queste domande, penso che puoi anche capire come il tuo codice va storto.

Intendo anche quello che ho detto in un commento: è qui che devi imparare a usare un debugger. L'investimento nell'apprendimento ripagherà molte volte durante la tua carriera.