Сколько обменов сделает сортировка пузырьком для массива 7 3 9 1 5
Условие
Массив A = [7, 3, 9, 1, 5] сортируют по возрастанию методом пузырька: за один проход слева направо последовательно сравнивают соседние элементы A[j] и A[j+1] и меняют их местами, если A[j] > A[j+1]; проходы повторяют до тех пор, пока очередной проход не пройдёт без единого обмена. Определите, сколько обменов будет выполнено за всю сортировку и как будет выглядеть массив после первого прохода.
Ответ
6 обменов; после первого прохода массив [3, 7, 1, 5, 9]
Решение по шагам
Шаг 1. Разбираемся, как устроен один проход
Проход — это движение слева направо по всем парам соседей. На каждом шаге мы смотрим ровно на два стоящих рядом элемента и меняем их местами, если левый больше правого. Ни минимума, ни максимума по всему массиву при этом не ищут — сравниваются только соседи.
В массиве из 5 элементов пар соседей четыре: (1,2), (2,3), (3,4), (4,5). Значит, в каждом проходе будет ровно 4 сравнения.
Сделаем первые два шага первого прохода:
- сравниваем 7 и 3: левый больше — меняем местами, массив становится 3 7 9 1 5;
- сравниваем 7 и 9 (это уже новая пара соседей, на второй и третьей позициях): порядок правильный — обмена нет.
Шаг 2. Что именно считаем и когда остановимся
Важно не путать две величины: сравнений в каждом проходе ровно 4, а обменов может быть от 0 до 4. В задаче спрашивают именно обмены, поэтому будем считать их отдельно по каждому проходу, а в конце сложим.
Полезное свойство метода: за один проход наибольший из ещё неупорядоченных элементов обязательно «всплывает» в конец массива — отсюда и название. Поэтому для элементов содержательных проходов не больше .
Остановка по условию задачи наступает не тогда, когда массив стал упорядоченным, а тогда, когда очередной проход прошёл без единого обмена. Такой контрольный проход обязательно выполняется, но обменов в общую сумму не добавляет.
Осталось ещё 4 шага — откроются после входа:
- Шаг 3. Доводим первый проход до конца
- Шаг 4. Проходы 2 и 3
- Шаг 5. Контрольный проход и подсчёт
- Шаг 6. Проверка через число инверсий
Бесплатно · займёт минуту
Частые ошибки
- ✗
Считают не обмены, а сравнения: их здесь 4 + 4 + 4 + 4 = 16 (или 4 + 3 + 2 + 1 = 10 в версии с укорачивающимися проходами), но вопрос был про обмены.
- ✗
Забывают контрольный проход и считают, что сортировка закончилась после третьего прохода «просто потому, что массив упорядочен» — алгоритм узнаёт об этом только на следующем проходе.
- ✗
Записывают в ответ на второй вопрос уже отсортированный массив [1, 3, 5, 7, 9] вместо промежуточного [3, 7, 1, 5, 9].
- ✗
Меняют местами A[j] и A[j+1] при условии A[j] < A[j+1] — тогда массив сортируется по убыванию.
- ✗
Путают пузырёк с сортировкой выбором и ищут минимум по всему массиву, хотя сравниваются только соседи.