Сортировка выбором
При сортировке массива M[0], M[1], ..., M[n-1] методом простого выбора среди всех элементов находится элемент с наименьшим значением M[i], и M[0] и M[i] обмениваются значениями. Затем этот процесс повторяется для получаемых подмассивов M[1], M[2], ..., M[n-1], ... M[j], M[j+1], ..., M[n-1] до тех пор, пока мы не дойдем до подмассива M[n-1], содержащего к этому моменту наибольшее значение.
Общий алгоритм
function Grade (Array[], LengthOfArray) {
if (LengthOfArray < 2) then return Array[];
else {
FirstIndex:=1;
while (FirstIndex < LengthOfArray) do {
i:=FirstIndex;
MinValue:= Array[i-1];
MinIndex:= i-1;
while (i < LengthOfArray) do {
if (MinValue > Array[i]) then {
MinValue:= Array[i];
MinIndex:= i;
}
i:=i+1;
}
if (MinIndex <> (FirstIndex-1)) then {
Array[MinIndex]:= Array[FirstIndex-1];
Array[FirstIndex-1]:= MinValue;
}
FirstIndex:=FirstIndex+1;
}
return Array[];
}
}
Pascal
program primer;
const n=5;
var a: array [1..n] of integer;
i, firstIndex, minValue, minIndex: integer;
begin
// заполнение массива случайными целыми числами от 10 до 99
randomize;
for i:=1 to n do begin
a[i]:=trunc((99-10)*random+10);
end;
// вывод исходного массива
write('Исходный массив: ');
for i:=1 to n do begin
write ('a[', i, ']=>', a[i]:3, '; ');
end;
writeln;
// сортировка выбором
if not (n<2) then begin
firstIndex:=2;
while (firstIndex<=n) do begin
i:=firstIndex;
minValue:=a[i-1];
minIndex:=i-1;
while (i<=n) do begin
if (minValue>a[i]) then begin
minValue:=a[i];
minIndex:=i;
end;
inc(i);
end;
if (minIndex<>firstIndex-1) then begin
a[minIndex]:=a[firstIndex-1];
a[firstIndex-1]:=minValue;
end;
inc(firstIndex);
end;
end;
// вывод отсортированного массива
write('Отсортированный массив: ');
for i:=1 to n do begin
write ('a[', i, ']=>', a[i]:3, '; ');
end;
writeln;writeln;
end.