{$A-} procedure string_quick_sort(var str:string_array;n:integer); const delta = 10; var temp : wrkstring; i,j,l,r : integer; procedure quick(l,r:integer); var i,j : integer; temp1,temp2 : wrkstring; begin if r-l>delta then begin temp2:=str[r]; i:=l-1; j:=r; repeat repeat i:=i+1 until str[i] >= temp2; repeat j:=j-1 until str[j] <= temp2; temp1:=str[i]; str[i]:=str[j]; str[j]:=temp1; until j <= i; str[j]:=str[i]; str[i]:=str[r]; str[r]:=temp1; quick(l,i-1); quick(i+1,r); end; end; begin {string_quick_sort} quick(1,n); for i:= 2 to n do begin temp:=str[i]; j:=i; while str[j-1] > temp do begin str[j]:=str[j-1]; j:=j-1; end; str[j]:=temp; end; end; {string_quick_sort} {$A+}