Witam
Kod działa poprawnie, jednak nie rozumiem momentu, kiedy jest warunek logiczny fixed. Skoro pętla for wykonuje się 4 razy i pod koniec pętli mamy tablice {5,3,2,8,9}, która nie jest poprawnie posortowana, natomiast na koniec ifa zmieniamy fixed na true; To po pierwszym przejściu pętli while powinien się zerwać, bo fixed = true.
Może ktoś wytłumaczyć jak zmienia się wartość fixed w kolejnych liniach kodu.
public static void main(String[] args) {
int number[] = {8, 5, 3, 2, 9};
int temp;
boolean fixed = true;
while (fixed) {
fixed = false;
for (int i = 0; i < number.length - 1; i++) {
if (number[i] > number[i + 1]) {
//if 8 > 5
temp = number[i + 1];
//store 5 in temp
number[i + 1] = number[i];
//put 8 in 5 place tablica w tej lini kodu wyglada tak: {8,8,3,2,9};
number[i] = temp;
//teraz tablica wyglada tak: {5,8,3,2,9}
fixed = true;
}
//po wykonaniu petli {5,3,2,8,9}
}
}
for(int i=0; i<number.length; i++){
System.out.println(number[i]);
}
}