program shell_sort_test_auf_Zeitverhalten; uses crt,dos; const maxN = 5000; var a : array[1..maxN] of word; N : integer; (* Anzahl der eingegeben Zahlen *) procedure lies_words_von_datei(datei : string); var dat : file of word; i : word; begin i:=0; assign(dat,datei); reset(dat); if not eof(dat) then repeat i:=i+1; read(dat,a[i]); until eof(dat); N:=i; close(dat); end; procedure print_words( ab:integer); var i : integer; begin for i:=ab to N do write(a[i],' '); writeln; writeln('*** ende *** '); end; procedure shellsort_test; label 0; var i,j,h : integer; v : word; begin h:=1; repeat h:=3*h+1 until h>N; repeat h:=h div 3; for i:=h+1 to N do begin v:=a[i]; j:=i; while (a[j-h] > v) do begin a[j]:=a[j-h]; j:=j-h; if j<=h then goto 0 end; 0: a[j]:=v; end; until h=1; end; var h,m,s,s1 : word; begin clrscr; writeln(' Shell-Sort : Test auf Zeitverhalten beim '); writeln(' Sortieren von 5000 Zahlen .'); writeln;writeln; writeln('Es erfolgt jetzt das Einlesen der 5000 Zahlen . '); 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; shellsort_test; gettime(h,m,s,s1); writeln(h, ':' ,m, ':' ,s, '.' ,s1 ); writeln;writeln; readln; print_words(4800); readln; end.