program selection_sort_test_auf_Zeitverhalten;
uses crt,dos;

const maxN = 5000;

var  a   : array[1..maxN] of word;
     N,i : word;


procedure selection_test;
var k,l,min,t  : word;
begin
 for k:=1 to N-1 do
  begin
    min:=k;
    for l:=k+1 to n do  if a[l]<a[min] then min:=l;
    t:=a[min];
    a[min]:=a[k];
    a[k]:=t;
  end;
end;


procedure lies_words_von_datei( datei:string);
var k   : integer;
    dat : file of word;
begin
 k:=0;
 assign(dat,datei);
 reset(dat);
 if not eof(dat) then
   repeat
     k:=k+1;
     read(dat,a[k]);
   until eof(dat);
 N:=k;
end;


procedure print_words(ab : word);
var k : word;
begin
 for k:=ab to N do  write(a[k],' ');
 writeln('*** ende ***');
end;


(***************************** Main *************************)
var h,m,s,s1 : word;
begin
 clrscr;
 writeln('      *** Selection Sort ***   :  Test auf Zeitverhalten beim ');
 writeln('                                  Sortieren von 5000 Zahlen . ');
 writeln;writeln;
 writeln('Jetzt werden die Zahlen eingelesen .');
 writeln;writeln;
 lies_words_von_datei('sorting.int');
 writeln('Fertig !  Jetzt wird sortiert . ');
 writeln;writeln;
 gettime(h,m,s,s1);
 writeln(h, ':' ,m, ':' ,s, '.' ,s1);
 writeln;writeln;
 selection_test;
 gettime(h,m,s,s1);
 writeln(h, ':' ,m, ':' ,s, '.' ,s1);
 writeln;writeln;
 readln;
 print_words(4800);
 readln;
end.