Присоединиться

Информатика·Алгоритмы и программирование·9–11 класс

Сколько обменов сделает сортировка пузырьком для массива 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. Шаг 1. Разбираемся, как устроен один проход

    Проход — это движение слева направо по всем парам соседей. На каждом шаге мы смотрим ровно на два стоящих рядом элемента и меняем их местами, если левый больше правого. Ни минимума, ни максимума по всему массиву при этом не ищут — сравниваются только соседи.

    В массиве из 5 элементов пар соседей четыре: (1,2), (2,3), (3,4), (4,5). Значит, в каждом проходе будет ровно 4 сравнения.

    Сделаем первые два шага первого прохода:

    • сравниваем 7 и 3: левый больше — меняем местами, массив становится 3 7 9 1 5;
    • сравниваем 7 и 9 (это уже новая пара соседей, на второй и третьей позициях): порядок правильный — обмена нет.
  2. Шаг 2. Что именно считаем и когда остановимся

    Важно не путать две величины: сравнений в каждом проходе ровно 4, а обменов может быть от 0 до 4. В задаче спрашивают именно обмены, поэтому будем считать их отдельно по каждому проходу, а в конце сложим.

    Полезное свойство метода: за один проход наибольший из ещё неупорядоченных элементов обязательно «всплывает» в конец массива — отсюда и название. Поэтому для nn элементов содержательных проходов не больше n1=4n - 1 = 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] — тогда массив сортируется по убыванию.

  • Путают пузырёк с сортировкой выбором и ищут минимум по всему массиву, хотя сравниваются только соседи.

Другие задачи по теме «Алгоритмы и программирование»