经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
而在算法的实现中,我们只需略微修改原有归并排序,当右边序列的元素为较小值时,就统计其产生的逆序对数量,即可完成逆序对的统计。【程序实现】void msort(int s,int t){ if(s==t) return; //如果只有一个数字则返回,无须排序 int mid=(s+t)/2; msort(s,mid); //分解左序列 msort(mid+1,t); //分解右序列 int i=s, j=mid+1, k=s; //接下来合并 while(i<=mid && j<=t) { if(a[i]<=a[j]) { r[k]=a[i]; k++; i++; }else{ r[k]=a[j]; k++; j++; ans+=mid-i+1; //统计产生逆序对的数量 } } while(i<=mid) //复制左边子序列剩余 { r[k]=a[i]; k++; i++; } while(j<= ...
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|