program bubble_sort_test;     (* Sortieren von 5000 word's *)
uses crt,dos;

const maxN = 5000;

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


procedure bubble;
var k,l  : integer;
    t    : word;
begin
 for k:=N downto 1 do
  for l:=2 to k do
    if a[l-1]>a[l] then begin
                          t:=a[l-1];
                          a[l-1]:=a[l];
                          a[l]:=t;
                        end;
end;





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




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



var h,m,s,s1  : word;
begin
 clrscr;
 writeln('           *** Bubble Sort : Test auf Zeitverhalten *** ');
 writeln;writeln;
 writeln('Jetzt werden die 5000 Zahlen eingelesen . ');
 writeln;writeln;
 read_array_von_datei('sorting.int');
 N:=3000;
 clrscr;
 writeln('Fertig . Jetzt erfolgt das Sortieren ! ');
 writeln;
 gettime(h,m,s,s1);
 writeln('Anfang  :  ',h, ':' ,m, ':' ,s, '.' ,s1 );
 bubble;             writeln;
 gettime(h,m,s,s1);
 writeln('Ende    :  ',h, ':' ,m, ':' ,s, '.' ,s1 ); writeln;
 print_array(N-150+1);     readln;
end.