Molti esempi sul web su Quicksort (in Java) sono vicini a questo:Quicksort - motivo è uguale a controlli
private void quicksort(int low, int high) {
int i = low, j = high;
int pivot = numbers[low + (high-low)/2];
while (i <= j) {
while (numbers[i] < pivot) {
i++;
}
while (numbers[j] > pivot) {
j--;
}
if (i <= j) {
exchange(i, j);
i++;
j--;
}
}
if (low < j)
quicksort(low, j);
if (i < high)
quicksort(i, high);
}
La cosa di cui sono perplesso circa è il motivo per cui ci sono quelli uguale controlli:
1) while (i <= j)
anziché while (i < j)
2) if (i <= j)
anziché if (i < j)
Ci sono casi limite in cui questo è fondamentale? Dalla mia comprensione se avessimo if(i == j)
, allora fondamentalmente scambieresti lo stesso valore con lo stesso valore.
Chiunque può risolvere questo puzzle per me?
Potresti pubblicare un link di una di quelle sorgenti online con codice come questo? Penso che tu abbia ragione che è del tutto privo di significato scambiare con un elemento stesso – shole
Lo snippet dall'alto proviene effettivamente dal blog di vogella. – Lucas