1.什么是逆序数对?
在数组a中如果a[i]>a[j].且i<j则<i,j>称为一个逆序数对

#include<iostream>
using namespace std;
#define MAX 1000;
void main()
{  int  Calculate(int *A,int begin,int end,int mid);
  int CountInversions(int *A,int begin,int end);
  int A[5]={5,4,3,4,1};
  
  int result=CountInversions(A,0,4);
  cout<<result<<endl;
 
 char f;
 cin>>f;
}

int CountInversions(int *A,int begin,int end)
{  int Calculate(int *A,int begin,int end,int mid);
 int  count=0;
 if(begin<end)
 {
  int mid=(begin+end)/2;
  count+=CountInversions(A,begin,mid);
  count+=CountInversions(A,mid+1,end);
  count+=Calculate(A,begin,end,mid);
  
 }
return count;
}
int Calculate(int *A,int begin,int end,int mid)
{
    int cnt=0;
    //bool counted=false;
 int n1=mid-begin+1;
 int n2=end-mid;
 int *L=new int[n1+1];
 int *R=new int[n2+1];
 for(int m=0;m<n1;m++)
 {
  L[m]=A[begin+m];

}
 for(int m=0;m<n2;m++)
 {
  R[m]=A[mid+1+m];
 }
 L[n1]=MAX;
 R[n2]=MAX;
 int  i=0;
 int  j=0;
 for(int k=begin;k<=end;k++)
 {  
  
 
  if(L[i]<=R[j])
  {  A[k]=L[i];
   i++;
  }
  else
  {  A[k]=R[j];
   j++;
   cnt=n1-i+cnt;
  }
 }
 delete[]L;
 delete []R;
 return cnt;

}

转载于:https://www.cnblogs.com/finallyliuyu/archive/2009/08/13/1545302.html

归并法计算数组中的逆序数对相关推荐

  1. 剑指 offer set 22 数组中的逆序数

    总结 1. 题目为归并排序的变形, 不过我完全没想到 2. 在归并排序进行字符组 merge 时, 统计逆序数. merge 后, 两个子数组是有序的了, 下次再 merge 的时候就能以 o(n) ...

  2. python求123逆序数_应用Python来计算排列中的逆序数个数

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.一个排列中所有逆序总数叫做这个排列的逆序数.也就是说,对于 ...

  3. c语言数组求逆序对,LeetCode 面试题51. 数组中的逆序对

    面试题51. 数组中的逆序对 题目来源:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/ 题目 在数组中的两个数字,如果 ...

  4. 剑指offer之【数组中的逆序对】

    题目: 数组中的逆序对 链接: https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tpId=13&tqId= ...

  5. [剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]

    [问题描述]面试题51.数组中的逆序对 (困难) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1:输入: [7, ...

  6. 剑指Offer - 面试题51. 数组中的逆序对(归并排序,求逆序对)

    1. 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5限制: 0 ...

  7. vb.net中递归退到最外层_数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  8. android实现数组倒序,5.1.33 33.数组中的逆序对 - Android 校招面试指南

    一.题目 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 举例分析 例如在数组{7, 5, 6, 4 中, 一共存在5 个逆 ...

  9. 输入一个数组,求出这个数组中的逆序对的总数

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

最新文章

  1. 游戏建模、纹理、后期,手把手教你制作《向日葵公主》
  2. 分布式事务 -- seata框架AT模式实现原理
  3. IIS内部错误:500之解决方案
  4. 吴恩达机器学习作业(4):正则化逻辑回归
  5. Eclipse快捷键 10个最有用的快捷键(转)
  6. 从源码安装mysql_从源代码安装mysql
  7. 算法竞赛学习资源整理
  8. CodeSmith基础(八)
  9. 【github】命令和错误小结
  10. QTP 11.05下载并完成+皴
  11. inode客户端连接成功上不了网_iNode的客户端部分常见问题
  12. vscode更换主题颜色(护眼色)
  13. amp; 取地址符的用法总结
  14. Google Earth Engine——可视化的美国加州圣华金河流域的100年气候预测模型
  15. 最新花粥云商城源码(硬防墙)V1.1版本
  16. 不给移动一分钱!10个免费发短信的国外站点
  17. 轻松6步完成App开发
  18. 考研英语阅读12种解题技巧!快来马!
  19. 查看表所有列名SQL
  20. 全球与中国无人机数据处理软件市场深度研究分析报告

热门文章

  1. 社区团购战国七雄出场了
  2. 打工好,还是创业好?
  3. 一款无需写任何代码即可一键生成前后端代码的开源工具
  4. MyBatis的搭建流程(idea+maven)
  5. msyql数据类型对照java类型
  6. sa密码不满足强密码要求_恢复丢失的SA密码
  7. 学习sql注入:猜测数据库_学习SQL:SQL数据类型
  8. azure 入门_Azure Cosmos DB入门
  9. SQL Server数据库迁移最佳实践,可降低风险和停机时间
  10. Vue.js中,如何自己维护路由跳转记录?