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.