package Schildt.Chapter5;
public class BubbleSortYouTube {
public static void main(String[] args) {
int array[] = new int[]{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
System.out.println();
boolean isSorted = false;
while (!isSorted) { // почему не вписать проста true изначально в инициализации?
for(int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
System.out.println();
isSorted = true; // зачем вписано тут? что он делает?
for (int i = 1; i < array.length; i++) {
if (array[i] < array[i - 1]) { // если 9 меньше 10
int temp = array[i]; // тогда записываем в переменную temp число 9
array[i] = array[i - 1]; // То есть индекс 1 задаю новое значение 10
array[i - 1] = temp; // индекс 0 задаю новое значение 9
isSorted = false; // что делает этот кусок? как он работает?
}
}
}
}
}Jake
9 уровень
Как работает boolean && while в алгоритме?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
21 апреля 2020, 08:04решение
Вопрос скорее в том, что в цикле while делает вывод.
while (!isSorted) говорит о том, что цикл будет продолжаться, пока isSorted = false, т.е. пока список не отсортирован.
А потом ты как бы объявляешь его отсортированным, если не доказано обратного.
Т.е. говоришь, что isSorted = true, словно цикл можно прервать после текущей итерации.
А затем проверяешь, надо ли свапать элементы, перебирая их попарно в цикле for.
Если пришлось что-то свапнуть, значит список не отсортирован, значит возвращаешь isSorted = false, и цикл while повторится еще раз.
isSorted каждый раз становится false в том случае, когда пришлось менять местами элементы.
Как только пройдет цикл, в котором условие в этом ифе ни разу не выполнится:, то isSorted не станет false, и while прервется, потому что больше нечего менять местами.
+2
JakeAndroid Developer в Яндекс
21 апреля 2020, 08:09
Спасибо огромное, с 2х ночи сижу не мог понять как она работает.
0