Формалізуємо алгоритм сортування методом вибору і реалізуємо його мовою Pascal. Весь масив вважати невідсортованою частиною. Поки ця частина містить більше одного елемента, виконувати такі дії:
1.Вибрати перший елемент невідсортованої частини масиву і вважати його мінімальним; запам'ятати індекс цього елемента.
2.Для елементів від наступного після вибраного і до останнього повторювати такі дії.
2.1.Порівняти вибраний елемент і поточний.
2.2.Якщо вибраний елемент більший за поточний, запам'ятати поточний елемент як мінімальний, а його індекс — як індекс мінімального елемента.
3.Поміняти місцями мінімальний і вибраний на кроці 1 елементи.
4.Пересунути початок невідсортованої частини на одну позицію вправо.
program ex6_2; {сортування методом вибору}
uses crt;
var n,i,j:integer; {кількість та індекси елементів}
а:аrrау[1..10] of integer;
min, іmin:integer; {мінімальний елемент і його індекс}
Begin
clrscr;
randomize; {ініціалізувати генератор випадкових чисел}
writeln(‘selection sort’);
writeln(‘enter number of the components (<=10)’);
readln(n); {ввести кількість елементів масиву}
for i:=l to n do {генерувати масив}
a[i]:=random(30);
writeln('generated array');
for i:=l to n do {вивести згенерований масив)
write(a[i],' ');
writeln;
writeln('series of selection');
for і;=1 to n-1 do
begin
min:=a[i]; {пошук мінімального елемента в діапазоні від і-го до останнього елемента}
imin:=i; {індекс мінімального елемента}
for j:=i+l to n do {пошук мінімального елемента}
if min>a[j] then
begin
min:=a[j];
imin:=j;
end;
a[imin]:=a[i]; {обмін місцями мінімального та поточного елементів} a[i]:=min;
for j:=l to n do {виведення проміжних результатів}
write(a[j],' ');
writeln;
end;
writeln('sorted array');
for i;=l to n do {виведення відсортованого масиву}
write(a[i],' ');
readln;
End.