Коллекция алгоритмов

Пузырьковая сортировка
    Ее основной принцип состоит в выталкивании маленьких значений на вершину списка в то время, как большие значения опускаются вниз. У пузырьковой сортировки есть много различных вариантов. Здесь мы опишем один из них.
    Алгоритм пузырьковой сортировки совершает несколько проходов по списку. При каждом проходе происходит сравнение соседних элементов. Если порядок соседних элементов неправильный, то они меняются местами. Каждый проход начинается с начала списка. Сперва сравниваются первый и второй элементы, затем второй и третий, потом третий и четвертый и так далее; элементы с неправильным порядком в паре переставляются. При обнаружении на первом проходе наибольшего элемента списка он будет переставляться со всеми последующими элементами пока не дойдет до конца списка. Поэтому при втором проходе нет необходимости производить сравнение с последним элементом. При втором проходе второй по величине элемент списка опустится во вторую позицию с конца. При продолжении процесса на каждом проходе по крайней мере одно из следующих по величине значений встает на свое место. При этом меньшие значения тоже собираются наверху. Если при каком-то проходе не произошло ни одной перестановки элементов, то все они стоят в нужном порядке, и исполнение алгоритма можно прекратить. Стоит заметить, что при каждом проходе ближе к своему месту продвигается сразу несколько элементов, хотя гарантированно занимает окончательное положение лишь один.
    Вот алгоритм, реализующий этот вариант пузырьковой сортировки:
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			
			  
Рейтинг@Mail.ru Rambler's Top100
Сайт управляется системой uCoz