Program sortirovka;
Uses dos,crt;
Var A:array[1..1000] of real;
min,k:real;
s,o,j,i,t,n:integer;
h1,m1,s1,hund1,h2,m2,s2,hund2:word;
begin

clrscr;

writeln('
программа сортировки массива поиском минимального элемента');
repeat

write('
введите отличное от 0 количество элементов массива - ');
readln(n);
until n>0;
readln;

o:=0;
// Устанавливаем количество произведенных сравнений элементов между собой.
s:=0; // Устанавливаем количество произведенных обменов элементов.

writeln('исходный массив сформированный случайным образом из ',n:0,' элементов');
writeln;

randomize;
for i:=1 to n do
begin
A[i]:=random(1000);
// Задается с помощью функции Random массив.
write(A[i]:4:0);
end;

writeln;
readln;

gettime(h1,m1,s1,hund1);
// С помощью функции gettime() получаем время начала выполнения сортировки.

for j:=1 to n-1 do // Осуществляем проход по массиву
begin
min:=A[j];
for i:=j to n do
// Минимальный элемент найденный в результате прохода по массиву в следующем проходе учитываться не будет.
begin
if min>=A[i] then
// Поиск минимального элемента массива.
begin
min:=A[i];
t:=i;
end;
inc(s);
// Считаем количество сравнений элементов.
end;
if A[t]<>A[j] then
// Если в результате прохода по массиву, оказалось что минимальный элемент стоит в начале массива, то обмена производиться не будет.
begin
k:=A[j];
A[j]:=A[t];
A[t]:=k;
inc(o);
// Считаем количество обменов элементов.
end;
end;

gettime(h2,m2,s2,hund2);
// С помощью функции gettime() получаем время окончания сортировки.

writeln;
writeln('
отсортированный массив');
writeln;
for i:=1 to n do write(A[i]:4:0);
// Вывод отсортированного массива на экран.
writeln;
writeln;
writeln('
Время сортировки массива: ',h2-h1,':',m2-m1,':',s2-s1,':',hund2-hund1); // ОТ конечного времени сортировки отнимаем время ее начала, результат выводим на экран.
writeln('Количество обменов - ',o:0); // Вывод на экран количества обменов элементов.
writeln('Количество сравнений - ',s:0); // Вывод на экран количества сравнений элементов.

readln;
end.