procedure sort(var a:array[1..200000] of longint;l,r:longint);
var b,c:array[1..200000] of longint;
procedure MERGE_SORT(l,r:longint);
var mid,i,t1,t2:longint;
begin
if l<>r then
begin
mid:=(l+r) shr 1;
MERGE_SORT(l,mid);
MERGE_SORT(mid+1,r);
for i:=1 to mid-l+1 do b[i]:=a[l+i-1];
for i:=1 to r-mid do c[i]:=a[mid+i];
b[mid-l+2]:=inf;
c[r-mid+1]:=inf;
i:=l;
t1:=1;
t2:=1;
while i<=r do
begin
if b[t1]<c[t2] then
begin
a[i]:=b[t1];
inc(t1);
end
else
begin
a[i]:=c[t2];
inc(t2);
end;
inc(i);
end;
end;
end;
begin
MERGE_SORT(l,r);
end;
归并排序模板w(kl)
最新推荐文章于 2019-08-31 10:18:26 发布