Для сортування за зростанням знаходимо в масиві елемент з мінімальним значенням на інтервалі від 1-го елемента до n-го (останнього елемента) і міняємо його місцями з першим елементом. На другому кроці знаходимо елемент з мінімальним значенням на інтервалі від 2-го до n-го елемента і міняємо його місцями з другим елементом.
І так далі для всіх елементів до (n -1)-го.
Програма, яка реалізує метод вибору, буде мати наступний вигляд:
program Selectionsort;
Var
Vector : array [1..50] of real ;
B : real;
Min : Real;
Imin,s, i, n : Integer;
begin
Writeln(' Введіть розмірність масиву: ');
Readln(n);
Writeln (' Введіть елементи масиву: ');
for i : =1 to n do Read (Vector[i]) ;
for s : = 1 to n - 1 do
begin
{пошук мінімального елемента в діапазоні від S - го елемента до n - го}
Min : = Vector [S];
Imin : = S;
for i : = S + 1 to n do
if Vector [i] < Min then
begin
Min : = Vector [i];
Imin : = i
end;
{Обмін місцями мінімального і S - го елементів}
Vector [Imin] : = Vector [S];
Vector [S] : = Min;
end;
Writeln (' Відсортований масив : ');
for i : = 1 to n do
Write (Vector [i] : 8 : 2);
writeln;
end.
10.2.3 Сортування обміном ("бульбашкове" сортування)
Зліва направо по черзі порівнюються два сусідніх елемента, і якщо їх взаємне розташування не відповідає заданим критеріям впорядкованості, то вони міняються місцями. Далі беруться два наступних сусідніх елемента і так далі до кінця масиву.
Після одного такого проходу на останній n - ой позиції масиву буде стояти максимальний елемент ("виплив" першої "бульбашки"). Оскільки максимальний елемент вже стоїть на своїй останній позиції, то другий прохід обмінів виконується до n-1-го елементами та. І так далі. Всього потрібно n-1 прохід.
Програма, яка реалізує метод обміну ("бульбашки"), буде мати наступний вигляд:
program Bubblesort;
Var
Vector : array [1..50] of real ;
B : real;
i,k,n: integer;
begin
Writeln(' Введіть розмірність масиву: ');
Readln(n);
Writeln (' Введіть елементи масиву: ');
for i : = 1 to n do
Read (Vector [i]);
for k : = n downto 2 do
for i : = 1 to k-1 do
if Vector [i] > Vector [i + 1] then
begin
B : = Vector [i];
Vector [i] : = Vector [i + 1];
Vector [i + 1] : = B
end;
Writeln (' Відсортований масив : ');
for i : = 1 to n do
Write (Vector [i] : 8 : 2);
Writeln;
end.