Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Алгоритм пузырьковой сортировки (bubble, for, var, TListBox, циклы в pascal)



Суть этого алгоритма состоит в том, что элемент сортируемого списка как бы "всплывает", подобно пузырьку (кстати, именно поэтому алгоритм получил свое название), и движется он до тех пор, пока не найден свое место. В реализации этот алгоритм очень прост, смотрите сами:procedure Bubble(var item: DataArray; count:integer);

var

i,j: integer;

x: DataItem;

begin

for i:= 2 to count do

begin

for j:= count downto i do

if item[j-1]>item[j] then

begin

x:= item[j-1];

item[j-1]:= item[j];

item[j]:= x;

end;

end;

end;

Если вы внимательно посмотрите на программу, то наверняка сразу зададите вопрос, почему первый цикл начинается со второго элемента? Что бы ответить на него, посмотрим вложенный цикл. Он начинается с конца сортируемого списка и идет в обратном направлении до текущего элемента родительского цикла. Теперь обратим внимание на содержимое вложенного цикла:if item[j-1]>item[j] then

begin

x:= item[j-1];

item[j-1]:= item[j];

item[j]:= x;

end;

Как видим, мы совершаем операции с элементом под номером j-1. На первом проходе это и будет элемент под номером 1 (потому что 2-1=1).

Как же работает алгоритм пузырьковой сортировки? Верхний цикл перемещает указать в прямом направлении, за указателем элементы оказываются отсортированными. А непосредственно сортировкой занимается вложенный цикл. Он то и как раз "проталкивает" элемент до своего места, делая это путем перестановок. x:= item[j-1];

item[j-1]:= item[j];

item[j]:= x;

Естественно, перестановка нужна только в том случае, когда предыдущий элемент больше текущего - значит, его нужно "опустить", а текущий наоборот, "поднять". Если мы сортируем по убыванию, тогда, естественно, все наоборот.





Дата публикования: 2015-02-03; Прочитано: 269 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...