wiele przykładów w internecie o Quicksort (w Javie) są zbliżone do tego:Quicksort - powodem jest równa weryfikacje
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);
}
Rzecz jestem zaskoczony o to, dlaczego są tacy równa kontrole:
1) while (i <= j)
zamiast while (i < j)
2) if (i <= j)
zamiast if (i < j)
Czy są jakieś przypadki skrajne, w których ta liczba jest kluczowa? Z mojego rozumienia, gdybyśmy mieli if(i == j)
, wówczas zasadniczo wymienialibyśmy tę samą wartość o tej samej wartości.
Ktoś może rozwiązać to zagadnienie dla mnie?
Czy możesz umieścić link do jednego z tych źródeł internetowych, które mają taki kod? Myślę, że masz rację, że nie ma sensu zamieniać się z samym elementem. – shole
Fragment z góry pochodzi z bloga vogella. – Lucas