![]() |
![]() |
![]() |
Любой метод сортировки так или иначе связан с обменом - с перестановкой двух элементов в памяти. Для обменной сортировки это основная характеристика процесса. Идея сортировки простым обменом заключается в многократных попарных сравнениях рядом стоящих элементов таблицы и перестановке этих элементов в заданном порядке.
Например, задана таблица
Номер элемента | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 7 | 49 | 1 | 12 | 3 |
Необходимо организовать ее просмотр от конца к началу или от начала к концу. Сравнить значения элементов 4 и 5 и поменять их местами, так как они расположены не по возрастанию. Далее сравнить элементы 3 и 4. Они остаются на своих местах, и т. д.
В результате минимальный элемент переместится в таблице на первое место и новая таблица после первого «прохода» примет вид:
Номер элемента | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 1 | 7 | 49 | 3 | 12 |
Все дальнейшие просмотры уже не включают просмотр первого элемента. Каждый последующий просмотр будет «устанавливать» очередной
минимальный элемент в левую часть таблицы. Упорядочение таблицы происходит за N - 1 просмотр.
Если представить, что элементы таблицы - это пузырьки в сосуде с водой, каждый с весом, равным ему по значению, то каждый
проход с обменом снизу вверх по таблице приводит к «всплыванию пузырька» на соответствующий его весу уровень. Благодаря
такой аналогии сортировка простым обменом получила название пузырьковой сортировки .
Составим алгоритм для решения этой задачи. Основная часть алгоритма - цикл, который должен выполниться за N - 1 раз. Выбор границ
1 и (N - 1) или 2 и N влияет только на задание индексов сравниваемых элементов. Пусть это будет -2 и N.
Словесный алгоритм будет следующим:
Для попарного сравнения элементов можно использовать для схемы алгоритмов графический цикл с параметром (символ «Подготовка»), зависящий от i, так как при каждом новом проходе по таблице длина ее будет уменьшаться.
Рассмотрим «попарное сравнение» более подробно.
Сравнение в п. b можно записать, используя операцию переприсвоения:
Если A j > A j-1 , To X = A j-1 ; A j-1 = A j ;A j = x.
На рис. 1.16 представлена схема алгоритма пузырьковой сортировки, для которой использован цикл с постусловием.
![]() |
![]() |
![]() |