Advertisement

归并排序用于计算逆序对数

阅读量:

已知一个整数序列,其长度为n,现要求计算该序列中逆序对的总数。

所谓逆序对,是指在序列中存在两个元素,分别位于第i位和第j位,当i小于j且第i位的数值大于第j位的数值时,这两个元素构成一个逆序对;反之则不构成。

输入描述
第一行给出一个整数n,用于表示序列的长度。

第二行给出n个整数,用以表示完整的序列。

输出描述
请输出一个整数,用以表示所求逆序对的数量。

数据范围说明
1≤n≤100000
输入示例:

复制代码
    6
    2 3 4 5 6 1
    
    
      
      
    

输出样例:

复制代码
    5
    
    
      
    

以下为C++语言编写的代码示例:

复制代码
    #include<iostream>
    using namespace std;
    #define N 100050
    
    int sum = 0;
    int tmp[N];
    void merge_sort(int q[],int l ,int r)
    {
    if(l>=r) return;
    int mid= l + r >> 1;
    
    merge_sort(q,l,mid);
    merge_sort(q,mid+1,r

全部评论 (0)

还没有任何评论哟~