program quicksort; (* mit Median = a[R] *) uses crt; const maxN = 50; var a : array[1..maxN] of string[50]; N : integer; (* Anzahl der eingegeben WÖrter *) procedure lies_strings; var i : integer; begin i:=0; repeat i:=i+1; write('Wort ',i,' : '); readln(a[i]); until a[i]=''; N:=i-1; end; procedure lies_strings_von_datei(datei : string); var dat : text; i : word; begin i:=0; assign(dat,datei); reset(dat); if not eof(dat) then repeat i:=i+1; readln(dat,a[i]); until eof(dat); N:=i; close(dat); end; procedure print_strings( ab:integer); var i : integer; begin for i:=ab to N do writeln(a[i]); writeln('*** ende *** '); end; procedure quicksort(L,R :integer); var i,j : integer; t,v, (* v ist der kÜnstliche Median *) v1,v2,v3 : string[50]; begin if L<R then begin v:=a[R]; i:=L-1; j:=R; repeat repeat i:=i+1 until ( a[i] >= v ); repeat j:=j-1 until ( a[j] <= v ); t:=a[i]; a[i]:=a[j]; a[j]:=t; until j<=i; a[j]:=a[i]; a[i]:=a[R]; a[R]:=t; quicksort(L,i-1); quicksort(i+1,R); end; end; begin clrscr; lies_strings_von_datei('sorting.asc'); { lies_strings;} print_strings(1); writeln;writeln; readln; quicksort(1,N); print_strings(1); readln; end.