Один из самых популярных методов сортировки — "пузырьковый" метод основан на том, что в процессе исполнения алгоритма более "легкие" элементы массива постепенно "всплывают". Особенностью данного метода является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательных просмотрах снизу вверх (от начала к концу) массива М. Если соседние элементы таковы, что выполняется условие, согласно которому элемент справа больше элемента слева, то выполняется обмен значениями этих элементов.
program Sort_Puz; {Сортировка массива "пузырьковым" методом по невозрастанию}
const
Count =20;
М: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, К, L : Byte;
A : integer;
begin
Writeln('Исходный массив:');
for I := 1 to Count do Write(M[I],' '); Writeln;
A:=0;
for I := 2 to Count do {Сортировка "пузырьковым" методом по нeвозрастанию}
begin
for J:=Count downto I do
begin
A:=A+1;
if M[J—1]<M[J] then {Если элемент справа больше элемента слева, то "вытеснить" его влево — пузырек "всплывает"}
begin
K:=M[J—1]; {Обмен значениями этих элементoв}
M[J-1]:=M[J];
M[J]:=K;
{Печатать текущее состояние массива после каждой перестановки}
for L := 1 to Count do Write(' ',M[L]);
Writeln('Число итераций =',A);
end;
end;
end; {Завершение сортировки}
end.
|