/ / quicksort implementácia nefunguje podľa očakávania - java, quicksort

implementácia quicksort nefunguje podľa očakávania - java, quicksort

Snažil som sa implementovať quicksort v jave, ale nefunguje to. Doslova som netušil, že by sa to pokazilo. Tu je to, čo mám zatiaľ:

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

odpovede:

0 pre odpoveď č. 1

Je to jednoduchšie s príkladom a ešte jednoduchšie s jednoduchým príkladom.

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

Teraz predpokladajme, že váš spôsob vyberie pivot 0, teda pivotValue 1. Teraz sa pokúste zistiť, akým spôsobom vaša metóda prechádza prvou iteráciou while slučky. Ďalej, aká je hodnota i po tomto opakovaní? Čo sa stane ďalej? Ak dokážete na tieto otázky odpovedať, myslím si, že môžete zistiť, ako sa váš kód pokazí.

Stále mám na mysli aj to, čo som povedal v poznámke: Tu sa musíte naučiť používať debugger. Investícia do vzdelávania sa počas vašej kariéry vráti mnohokrát.