Один из самых популярных методов сортировки – ″пузырьковый″ метод основан на том, что в процессе исполнения алгоритма более ″легкие″ элементы массива постепенно ″всплывают″. Особенности данного метода является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательных просмотрах снизу вверх (от начала к концу) массива М. Если соседние элементы таковы, что выполняется условие, согласно которому элемент справа больше элемента слева, то выполняется обмен значениями этих элементов.
Текст программы сортировки массива по невозрастанию можно записать в таком варианте:
program Sort_Puz; (Сортировка массива ″пузырьковым″ методом по невозрастанию}
const
Count=20;
M: array [1.. Count] of
byte=(9, 11, 12, 3, 19, 1, 5, 17, 10, 18, 3, 19, 17, 9, 12, 20, 20, 19, 2, 5);
var I, J, N, L: Byte;
A:integer;
begin
Writeln(′Исходный массив:′);
for I:=1 to Count do Write (M [I]′,’);
Writeln;
A:=0;
for I:=2 to Count do(Сортировка ″пузырьковым″ методом по невозрастанию}
begin
for J:= Count downto Ido
begin
A:=A+1;
if M[J-1]<M[J] then {Если элемент справа больше элемента слева, то ″вытеснить″ его влево - пузырек ″всплывает″}
begin
K: = M [J-1]; {Обмен значениями этих элементов}
M [J-1]: = M [J];
M [J]: = K;
{Печатать текущее состояние массива после каждой перестановки}
for L:=1 to Count do Write (Writein (′Число итераций=′,А);
end;
end;
end;{Завершение сортировки}
end.