Находится наибольший элемент вмассиве из N элементов (пусть он имеет номер р) и меняется местами с элементом, стоящим на N-м месте, при условии, что N<>p. Из оставшихся (N-1) элементов снова выделяется наибольший и меняется местами с элементом, стоящим на (N-1)-м месте и т. д. Алгоритм заканчивает свою работу, когда элементы, стоящие на 1-м и 2-м местах в массиве, будут упорядочены (для этого понадобится N-1 "проход" алгоритма). Аналогично данный алгоритм можно применять и к наименьшим элементам.
Пример: отсортировать массив А(1..N) по возрастанию.
program sort);
var a : array[1..n] of Real;
var i, j, min, vsp : integer;
begin
for i := 1 to n - 1 do
begin
min:=i;
for j := i+1 to n do
if a[j]<a[min] then min := j;
vsp:=a[i]; a[i]:=a[min]; a[min]:=vsp;
end;
end;