Сортування простим обміном

Наведений нижче алгоритм  сортування простим обміном заснований на принципі порівняння й обміну пари сусідніх елементів доти, поки не будуть відсортовані всі елементи. Сутність методу полягає у тому, що на кожному кроці порівнюються пари сусідніх елементів. Якщо “лівий” елемент більший за “правий”, то вони міняються місцями. Тобто, здійснюється впорядкування кожної пари елементів. Порівняння здійснюємо, починаючи з кінця масиву в зворотному природному порядку напрямку. В результаті елементи з малими значеннями будуть рухатись в бік початку масиву.

Якщо ми для розмаїтості будемо розглядати масив, розташований вертикально, і, уявляти  елементи пухирцями в резервуарі з водою, що володіють «вагами», які повідають їхнім ключам, то кожен прохід по масиві проводить до «спливання» пухирця на відповідній його вазі рівень.

Застосування методу розглянемо на прикладі впорядкування масиву з 10 елементів. Елементи, що переміщувались вліво, виділимо кольором.

Вихідний масив:

44  55  12  42  94  18  06  67  32  13

Після першого кроку:

06  44  55  12  42  94  18  13  67  32

Після другого кроку:

06  12  44  55  13  42  94  18  32  67

Після останнього кроку:

06  12  13  18  32  42  44  55  67  94

Процедура для запису алгоритму має вигляд:

procedure bubblesort (var a: massiv);

var

i,j: integer;

x: integer;

n1,n: integer;

begin

{границі масиву}

n1:=low(a);

n:= high (a);

{впорядкування}

for i:= n1 to n-1 do

  for j:= n downto i+1 do

  if a[j]<a[j-1] then

  begin

  x:=a[j];

  a[j]:=a[j-1];

  a[j-1]:=x;

  end;

end;

Число порівнянь для сортування даним методом дорівнює:

C=1/2 (n2 - n),

а кількість пересилань

Mmin  = 0, 

Mср = 3/4 (n2 - n), 

Mmax  = 3/2 (n2 - n).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
25 26 27 28  Наверх ↑