/ Implementacja / quicksort nie działa zgodnie z oczekiwaniami - java, quicksort

Implementacja quicksort nie działa zgodnie z oczekiwaniami - java, quicksort

Próbowałem zaimplementować Quicksort w Javie, ale to nie działa. Nie mam dosłownie pojęcia, czy coś poszło nie tak. Oto co mam do tej pory:

 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);
}

Odpowiedzi:

0 dla odpowiedzi № 1

Łatwiej jest z przykładem, a jeszcze łatwiej z prostym przykładem.

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

Załóżmy teraz, że twoja metoda wybiera pivot 0 stąd pivotValue 1. Teraz spróbuj dowiedzieć się, w jaki sposób Twoja metoda przyjmuje pierwszą iterację while pętla. Następnie, jaka jest wartość i po tej iteracji? Co się potem dzieje? Jeśli potrafisz odpowiedzieć na te pytania, myślę, że możesz również dowiedzieć się, w jaki sposób twój kod się nie udaje.

Nadal mam na myśli także to, co powiedziałem w komentarzu: To tutaj musisz nauczyć się korzystać z debuggera. Inwestycja w naukę zwróci się wiele razy w całej karierze.