procedure string_heap_sort(var str:string_array;n:integer); var i,j,r,l:integer; temp:wrkstring; not_ready:boolean; begin if n>0 then begin l:=n div 2+1; r:=n; repeat if l>1 then l:=l-1 else if r>1 then begin temp:=str[l]; str[l]:=str[r]; str[r]:=temp; r:=r-1; end; i:=l; j:=2*i; temp:=str[i]; not_ready:=(j<=r); while not_ready do begin if j: n < 1'); end;