归并排序模板w(kl)

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值