永发信息网

逆序对的求解逆序对个数问题

答案:1  悬赏:20  手机版
解决时间 2021-01-25 15:34
逆序对的求解逆序对个数问题
最佳答案
方法一:最原始的方法,利用两重循环进行枚举。该算法的时间复杂度为O(n^2)。
C++代码如下: int count_inversion(int *a, int N){    int count = 0;    int i, j;    for(i=0; ia[j])            count++;    return count;}Pascal代码如下: var  i,j,k,n:longint;  a:array[1..1000000] of longint;begin  readln(n);  for i:=1 to n do read(a[i]);  k:=0;  for i:=1 to n-1 do  for j:=i+1 to n do  if a[i]>a[j] then inc(k);  writeln(k);end.方法二:利用归并排序的思想求解逆序对的个数,这是解决该问题的一种较为高效的算法。该算法的时间复杂度为O(nlogn)。
C++代码如下: void merge_inversion(int *a, int l, int m, int r){    int i, j, k;    int n1 = m-l+1;    int n2 = r-m;    int *L = (int*)calloc(n1, sizeof(int));    int *R = (int*)calloc(n2, sizeof(int));    for(i=l; i<=m; i++)        L[i-l] = a[i];    for(j=m+1; j<=r; j++)        R[j-m-1]=a[j];    i = 0;    j = 0;    for(k=l; k<=r; k++)    {        if(ir)or(a[i]<=a[j])) then begin     b[p]:=a[i];     inc(i);     end   else begin    b[p]:=a[j];    inc(j);    inc(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:longint); var x:longint; 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.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
高中学生想自学大学化学课程,用什么书比较好
莱芜市和庄乡下洼村幼儿园怎么去啊,我要去那
可以买上一站的车票吗… 就是买了甲地到丙地
建设项目内部控制的主要内容包括(  )。A.
我前两天让人远程我的电脑,一直没有点击结束
我一提分手男友就说生病了,发烧了害我我都不
下图是我国四个地方(①一④)的年内各月气温
Cisco 2960的vlan配置问题
莱芜市莱城区凤城街道办事处曹西村幼儿园怎么
下列有关征纳双方权利、义务和法律责任的表述
拉娜娅的拉娜娅是怎么出装的,顺序。。。
TD-CDMA、CDMA2000、WCDMA有什么区别?
去哪里投诉开发商
莱芜市莱城区凤城街道办事处马庄幼儿园地址在
我喜欢一个女孩,我想关心她,她总是拒绝我的
推荐资讯
五甲社区居委会地址在什么地方,想过去办事
直肠指诊触不到的结构是()
凤凰大酒店茶楼(永隆店)地址好找么,我有些事
七宝聚茶苑地址在什么地方,想过去办事
【九宫格数字游戏】九宫格数字游戏求解**76*2
tcl手机陕西渭南售后服务网点查询
180°经线以东是BA. 东经B. 西经C. 南纬D.
元宵节的习俗作文600字
重伤二级共同犯罪!甲乙二人殴打他人!打人致
天津哪里有卖和修遥控直升机的地方,配件齐全
简述运算放大电路的增益带宽积和转换速率这两
玻璃纤维在建筑中可用于哪些方面
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?