Пузырьковая сортировка
Ее основной принцип состоит
в выталкивании маленьких значений на вершину списка в то время, как
большие значения опускаются вниз. У пузырьковой сортировки есть много
различных вариантов. Здесь мы опишем один из них.
Алгоритм пузырьковой сортировки совершает
несколько проходов по списку. При каждом проходе происходит сравнение
соседних элементов. Если порядок соседних элементов неправильный,
то они меняются местами. Каждый проход начинается с начала списка.
Сперва сравниваются первый и второй элементы, затем второй и третий,
потом третий и четвертый и так далее; элементы с неправильным порядком
в паре переставляются. При обнаружении на первом проходе наибольшего
элемента списка он будет переставляться со всеми последующими элементами
пока не дойдет до конца списка. Поэтому при втором проходе нет необходимости
производить сравнение с последним элементом. При втором проходе второй
по величине элемент списка опустится во вторую позицию с конца. При
продолжении процесса на каждом проходе по крайней мере одно из следующих
по величине значений встает на свое место. При этом меньшие значения
тоже собираются наверху. Если при каком-то проходе не произошло ни
одной перестановки элементов, то все они стоят в нужном порядке, и
исполнение алгоритма можно прекратить. Стоит заметить, что при каждом
проходе ближе к своему месту продвигается сразу несколько элементов,
хотя гарантированно занимает окончательное положение лишь один.
Вот алгоритм, реализующий этот вариант пузырьковой
сортировки:
BubbleSort(list, N)
list сортируемый список элементов
N число элементов в списке
numberOfPairs = N
swappedElements = true
while swappedElements do
numberOfPairs = numberOfPairs - 1
swappedOfElements = false
for i = 1 to numberOfPairs do
if list[i] > list[i + 1] then
Swap(list[i], list[i + 1])
swappedElements = true
end if
end for
end while
|
|