Алгоритм сортування масиву по зростанню методом прямого вибору може бути представлений так:
- переглядаючи масив від першого елемента, знайти мінімальний елемент і помістити його на місце першого елемента, а перший – на місце мінімального.
- переглядаючи масив від другого елементу, знайти мінімальний елемент і помістити його на місце другого елемента, а другий – на місце мінімального.
- І так далі до передостаннього елемента.
Нижче представлена програма сортування масиву цілих чисел по зростанню, діалогове вікно якої зображено на рис. 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. Діалогове вікно програми Сортування масиву