Сортування методом прямого вибору

Алгоритм сортування масиву по зростанню методом прямого вибору може бути представлений так:

  1. переглядаючи масив від першого елемента, знайти мінімальний елемент і помістити його на місце першого елемента, а перший – на місце мінімального.
  2. переглядаючи масив від другого елементу, знайти мінімальний елемент і помістити його на місце другого елемента, а другий – на місце мінімального.
  3. І так далі до передостаннього елемента.

Нижче представлена ​​програма сортування масиву цілих чисел по зростанню, діалогове вікно якої зображено на рис. 5.15.

Рис. 5.15. Діалогове вікно програми сортування масиву простим вибором

Процедура сортування, текст якої наведений у лістингу 5.9, запускається натисканням кнопки Сортування (Button1). Значення елементів масиву вводяться з осередків компонента StringGrid1. Після виконання чергового циклу пошуку мінімального елемента в частині масиву процедура виводить масив в поле мітки (Label2).

Лістинг 5.9. Сортування масиву простим вибором

procedure TForm1.ButtonlClick (Sender: TObject);

const
SIZE = 10;

var
a: array [1..SIZE] of integer;
min: integer; {Номер мінімального елемента в частині
масиву від i до верхньої межі масиву}
j: integer; {Номер елемента, порівнюваного з мінімальним}

buf: integer; {Буфер, який використовується при обміні елементів масиву}

i, k: integer;
begin
// введення масиву

for i: = l to SIZE do
a [i]: = StrToInt (StringGridl.Cells [i-1,0]) ; Iabel2.caption: = '';
for i: = l to SIZE-1 do begin
{Пошук мінімального елемента в частині масиву від а [1] до a [SIZE]} min: = i;
for j: = i + l to SIZE do if a [j] < a [min]
then min: = j;
{ поміняємо місцями a [min] і a [i]}

buf: = a [i]; a [i]: = a [min]; a [min]: = buf;
{ висновок масиву}

for k: = l to SIZE do
Label2.caption: = label2.caption + ' '+ IntTostr (a [k]);

Label2.caption: = label2.caption + # 13; end;
Label2.caption: = label2.caption + # 13 + 'MaccMB відсортований. ';

end;

На рис. 5.16 приведено діалогове вікно програми після завершення процесу сортування.

Рис. 5.16. Діалогове вікно програми Сортування масиву