int[] array = {10, 2, 10, 3, 1, 2, 5}; 1. System.out.println(Arrays.toString(array)); 2. boolean needIteration = true; 3. while (needIteration) { 4. needIteration = false; // допускаем, что наш массив отсортирован, и больше итерироваться не хотим (пояснение с лекции) 5. for (int i = 1; i < array.length; i++) { // Поэтому, мы проходим элементы последовательно и проверяем это допущение (пояснение с лекции) 6. if (array[i] < array[i - 1]) { 7. swap(array, i, i-1); 8. needIteration = true; 9. } 10. } 11. } 12. System.out.println(Arrays.toString(array)); Метод swap не пишу. Не понятна работа строки 4 и строки 8. В строке 4, в моем неправильном понимании работа while, вообще должна завершится, а в строке 8 - вообще не нужна, так как эта булева переменная меняет значение на true в рамках цикла for, т.е. как она должна повлиять на while ? Т.е. переменная needIteration с каждым разом когда отработает swap будет выдавать true. И что ж, когда все будет отсортировано, она не выдаст true. Может, потому, что значение переменной в четвертой строчке отрабатывает только один раз при первом так сказать запуске, и while прекращает работу, когда из внутреннего цикла к нему перестает поступать needIteration = true ? Сам придумал.