procedure sort( n, unit, direction : integer );
var i, r : integer;
begin
if n=0 then {*** Mark as dummy entry ***}
FilStat[unit] := '-'
else if n=1 then
ReadOneRun( unit, direction )
else for i:=1 to T-2 do begin
r := n div (T-i-1);
n := n-r;
sort( r, (unit+i-2) mod T + 2, -direction );
MergeOneRunInto( unit, -direction )
end
end;
|