归并排序与逆序对的问题
pascal吧
全部回复
仅看楼主
level 4
jimmyahacker 楼主
请教一下归并排序中求逆序对的方法为什么是
正确的
(即证明其正确性)。
如如下代码中:
     type arr=array[1..1000000]of longint;
      var   i,n,k:longint;
      a:arr;
      procedure merge(var a:arr; l,x,r:integer);
      var   i,j,p:integer;
      b:arr;
      begin
      i:=l; j:=x+1; p:=l;
      while p<=r do begin
      if (i<=x)and((j>r)or(a[i]<=a[j])) then begin
      b[p]:=a[i]; inc(i);
      end else begin
      b[p]:=a[j]; inc(j);
[揉脸]k:=k+x-i+1;。。。。。。。。。。。。。。。。。。。。。。。。。。。。
      end;
      inc(p);
      end;
      for i:=l to r do a[i]:=b[i];
      end;
      procedure msort(var a:arr; l,r:integer);
      var x:integer;
      begin
      if l<>r then begin
      x:=(l+r) div 2;
      msort(a,l,x);
      msort(a,x+1,r);
      merge(a,l,x,r);
      end;
      end;
      begin
      readln(n);
      for i:=1 to n do read(a[i]);
      k:=0;
      msort(a,1,n);
      writeln(k);
      end.
点阵+表情中的那一句怎么理解?
2010年08月21日 12点08分 1
level 5
饿啊啊啊啊啊啊啊啊啊啊啊啊、
LZ、、你这程序- -好汗啊、、
这么麻烦的说~
2010年09月06日 13点09分 2
level 5
LZ能解释一下其它的程序段么?~
2010年09月06日 13点09分 3
level 4
jimmyahacker 楼主
感谢了,我已经懂了

2010年09月10日 03点09分 5
level 12
我也懂了
2015年07月28日 15点07分 6
level 8
数学归纳法。假设递归调用能输出子区间的逆序对数目,证明函数能返回母区间的逆序对数。
2015年08月02日 08点08分 7
1