Сортировка простым обменом. Метод пузырька

Cамым простым методом сортировки является метод "пузырька". Чтобы понять, как он работает, представим, что массив (таблица) расположен вертикально.
Элементы с большим значением всплывают вверх наподобие больших пузырьков.
При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:

* если встречается элемент с меньшим значением, то они меняются местами;

* при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним.

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

Программа:


begin
for j:=1 to N-1 do
for i:=1 to N-j do
if M[i] > M[i+1] then
begin
t:=M[i];
M[i]:=M[i+1];
M[i+1]:=t;
end;

end;

program pr32;
const
x: array [1.. 8] of integer = (44, 55,12,42,94,18,06, 67);
var
l, i, j: integer;
begin
{ вывод на экран исходного массива x }
for i:= 1 то 8 do write(x[i]:5);
writeln;
for i:= 2 to 8
do for j:=8 downto i
do if x[j-1] > x[j]
then begin {переставить x[j-1] с х[j] местами}
l:=x[j-1];
x[j-1]:=x[j];
x[j]:=l
end; {if}
{ вывод на экран отсортированного массива x }
for i:= 1 то 8 do write(x[i]:5);
writeln
end.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: