Суть алгоритма пузырьковой сортировки заключается в попарном сравнении двух рядом стоящих элементов. Если эти элементы находятся по отношении друг к другу не в правильном порядке, то они переставляются местами. После чего проверка выполняется со следующей парой элементов. Сделав проход по всему массиву, и попарно переставив элементы, выполняется новый проход по массиву... и так до тех пор, пока все элементы не будут стоять на своих местах.
Исходя из этого сформулируем алгоритм: будем считать количество перестановок элементов при каждом полном проходе по массиву (переменная count), и если при очередном проходе не было сделано ни одной перестановки, то массив отсортирован и цикл можно завершить:
repeat
count := 0;
for i := 2 to n do
if a[i] < a[i - 1]
then begin
<Обмен значениями a[i] и a[i-1] элементов>
inc(count)
end
until count = 0
Напомним, что при обмене значениями двух элементов массива используется временная переменная:
temp := a[i];
a[i] := a[i - 1];
a[i - i] := temp;