@Goddamnboy

Для чего нужен второй цикл в алгоритме?

Вот сортировка пузырьком на C++. Для чего нужен второй цикл "for"(с переменной j) в ней ?
for (int i = 0; i < size - 1; i++) {
		for (int j = 0; j < size - i - 1; j++) {   //<- для чего он??
			if (arr[j] > arr[j + 1]) {
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
  • Вопрос задан
  • 381 просмотр
Пригласить эксперта
Ответы на вопрос 4
samodum
@samodum
Какой вопрос - такой и ответ
Второй цикл нужен для того, чтобы сложность алгоритма была О(n^2)
:)
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
чтобы было нескучно первому
Ответ написан
Комментировать
@bkosun
Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим «наибольшим элементом», а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции, как пузырёк в воде — отсюда и название алгоритма).


https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D...
Ответ написан
Комментировать
@AlexSku
не буду отвечать из-за модератора
Внутренний цикл - подъём одного пузырька. Внешний - поднять все пузырьки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы