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

Сутність методу полягає у наступному. На першому кроці обирається найменший елемент і міняється місцями з першим. На другому кроці серед решти елементів знову обирається найменший елемент і міняється місцями з другим. Цей процес продовжується до повного впорядкування вихідного масиву. Проілюструємо роботу методу на прикладі масиву з 10 елементів. На кожному кроці найменший елемент виділятимемо іншим кольором.

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

44  55  12  42  94  18  06  67  32  13

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

06  55  12  42  94  18  44  67  32  13

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

06  12  55  42  94  18  44  67  32  13

На останньому кроці

06  12  13  18  32  42  44  55  67  94

При записі алгоритму на кожному кроці доцільно при пошукові найменшого елементу запам’ятовувати не сам елемент, а його номер. Це спростить алгоритм. Процедура сортування простим вибором має такий вигляд:

procedure straightselection (var a: massiv);

var

i,j,k: integer;

x: integer;

n1,n: integer;

begin

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

n1:= Low(a);

n:= High (a);

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

for i:= n1 to n do

begin

  k:=i;

  for j:= i+1 to n do

  if a[j]<a[k] then k:=j;

  if  k >i then

  begin

  x:=a[i];

  a[i]:=a[k];

  a[k]:=x;

  end;

end;

end;

Число C порівнянь ключів не залежить від початкового порядку ключів:

C=1/2 (n2 +n–1).

Мінімальне число пересилань у випадку початково  упорядкованих елементів має значення:

Mmin=0

Найбільше значення ця величина приймає  у випадку, коли елементи вихідного масиву розташовані в зворотному порядку до впорядкування (тобто, впорядковані за спаданням):

Mmax=trunc (n2/4).

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  Наверх ↑