program insertion_sort_test_auf_Zeitverhalten;
uses crt,dos;

const maxN = 5000;

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


procedure insertion_test;
var k,l  : integer;
    v    : word;
begin
 for k:=2 to N do
  begin
    v:=a[k];
    l:=k;
    while a[l-1]>v do begin
                        a[l]:=a[l-1];
                        l:=l-1;
                      end;
    a[l]:=v;
  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 : integer);
var k : word;
begin
 for k:=ab to N do  write(a[k],' ');
 writeln;
 writeln('*** ende *** ');
end;


(*************************** Main **************************)
var h,m,s,s1 : word;
begin
 clrscr;
 writeln('       *** Insertion Sort ***  :  Test des Zeitverhaltens beim ');
 writeln('                                  Sortieren von 5000 Zahlen .');
 writeln;writeln;
 writeln('Jetzt erfolgt das Einlesen der Zahlen . ');
 lies_words_von_datei('sorting.int');
 writeln;writeln;
 writeln('Fertig ! Jetzt wird sortiert . ');
 writeln;writeln;
 gettime(h,m,s,s1);
 writeln(h, ':' ,m, ':' ,s, '.' ,s1 );
 writeln;writeln;
 insertion_test;
 gettime(h,m,s,s1);
 writeln(h, ':' ,m, ':' ,s, '.' ,s1 );
 readln;
 print_words(4800);
 readln;
end.