Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива.
После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент (“всплыл” первый “пузырек”). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-гo элемента. И так далее. Всего требуется п-1 проход.
Сортирока пузырьком
Программа, реализующая метод обмена (“пузырька”), будет иметь следующий вид:
Program BubbleSort; uses Crt; const n = 20; { длина массива } type TVector = array [l..n] of Real; var Vector : TVector; В : Real; i, k : Integer; Begin ClrScr; Writeln ('Введите элементы массива:'); for і := 1 to n do Read (Vector[i]); Readln; {-------------------------------} for к := n downto 2 do { "Всплывание" очередного максимального элемента } { на k-ю позицию } for і := 1 to k-1 do if Vector[i] > Vector[і+1] then begin В := Vector[і]; Vector[i] := Vector[i+1]; Vector[ і+1] := В; end; {------------------------------} Writeln('Отсортированный массив:'); for і := 1 to n do Write (Vector[i]:8:2); Writeln; End.
Немає коментарів:
Дописати коментар