@Yonghwa
121

Как bubbleSort понимает, что нужно начать цикл сначала?

public class Bubble {
	public static void main(String args[]){
		int bubble[] = {2,1,7,5,6,8,3,1};
		int temp;
		boolean check = false;
		while(check == false){
			check = true;
		
			for(int i = 0;i < bubble.length-1;i++){
				
				if(bubble[i] > bubble[i+1]){
					temp = bubble[i+1];
					bubble[i+1] = bubble[i];
					bubble[i] = temp;
					check = false;
				}
			}
		}
		for(int i = 0; i < bubble.length;i++){
			System.out.println(bubble[i]);
		}
	}
}


Я понимаю каждую строчку, кроме места в условии for.
Почему там указано length -1?Не совсем понимаю, как это работает, но мне кажется ответ кроется как раз в этом.
Цикл проходит по всем индексам, а затем он должен вернуться и начать заново, но я этого не вижу в коде.
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
fornit1917
@fornit1917
length-1 - потому что индексы начинаются с нуля, следовательно номер последнего - это length-1.
Цикл проходит по всем индексам, а затем он должен вернуться и начать заново, но я этого не вижу в коде.

"Начать заново" - это следующая итерация внешнего цикла while. Он остановится только тогда, когда внутри внутреннего цикла ниразу не сработает условие в if, т.е. когда массив будет отсортирован. Тогда check станет true, и следующая итерация while не запустится.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
Почему там указано length -1

потому что индексация начинается с 0, соответственно индекс последнего элемента "размер-1"

он должен вернуться и начать заново

for(int i = 0;i < bubble.length-1;i++)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы