Cсортировка методом пузырька

Алгоритм и особенности сортировки методом пузырька:


1.        При первом проходе по массиву элементы попарно сравниваются между собой:

первый со вторым, затем второй с третьим, следом третий с четвертым и т.д.

Если предшествующий элемент оказывается больше последующего, то их меняют местами.


2.        Не трудно догадаться, что постепенно самое большое число оказывается последним.

Остальная часть массива остается не отсортированной, хотя некоторое перемещение

элементов с меньшим значением в начало массива наблюдается.


3.        При втором проходе незачем сравнивать последний элемент с предпоследним.

Последний элемент уже стоит на своем месте. Значит, число сравнений будет на одно меньше.


4.        На третьем проходе уже не надо сравнивать предпоследний и третий элемент

с конца. Поэтому число сравнений будет на два меньше, чем при первом проходе.


5.        В конце концов, при проходе по массиву, когда остаются только два элемента,

которые надо сравнить, выполняется только одно сравнение.


6.        После этого первый элемент не с чем сравнивать, и, следовательно, последний

проход по массиву не нужен. Другими словами, количество проходов по массиву

равно m-1, где m - это количество элементов массива.


7.        Количество сравнений в каждом проходе равно m-i, где i - это номер прохода

по массиву (первый, второй, третий и т.д.).


8.        При обмене элементов массива обычно используется "буферная" (третья)

переменная, куда временно помещается значение одного из элементов.


Программа на языке Паскаль:


Program Puzirok;

const

    m = 10;


var

    arr: array[1..m] of integer;

    i, j, k: integer;


begin


    randomize;


    write ('Исходный массив: ');

    for i := 1 to m do begin

        arr[i] := random(256);

        write (arr[i]:4);

    end;

    writeln; 

    writeln;



    for i := 1 to m-1 do

        for j := 1 to m-i do

            if arr[j] > arr[j+1] then 

                begin

                k := arr[j];

                arr[j] := arr[j+1];

                arr[j+1] := k

                end;


    write ('Отсортированный массив: ');

    for i := 1 to m do

        write (arr[i]:4);


    writeln;


readln

end.


2. Сортировка пузырьком

 Программа к учебнику информатики для 10 класса К.Ю. Полякова и Е.А. Еремина. Глава 8. Программа № 42. 

 Вход: 

   1 

   3

   5 

   2 

   4

 Результат: После сортировки: 1 2 3 4 5


program bubbleSort;

const N = 5;

var A: array[1..N] of integer;

    i, j, c: integer;

begin

  writeln ( 'Введите элементы массива:' );

  for i:=1 to N do

    read ( A[i] );


          for i:=1 to N-1 do

    for j:=N-1 downto i do

      if A[j] > A[j+1] then 

               begin

                c:=A[j]; A[j]:=A[j+1]; 

               A[j+1]:=c;

              end;  

  writeln ( 'После сортировки: ' );

  for i:=1 to N do

    write ( A[i], ' ' );      

end.