归并排序 & 逆序对

归并排序(稳定)

逆序对

例题:洛谷 P1908 逆序对

思路:在归并排序合并时,每当从右段取数时,统计逆序对的数目。

代码:

cpp 复制代码
int n;
int a[N],b[N];
int ans=0;

void msort(int l,int r){
    if(l>=r) return;
    int mid=(l+r)>>1;
    msort(l,mid);
    msort(mid+1,r);

    int i=l,j=mid+1,k=l;
    while(i<=mid && j<=r){
        if(a[i]<=a[j]) b[k++]=a[i++];
        else{
            b[k++]=a[j++];
            ans+=mid-i+1; //左边从i开始都大于j指的数
        }
    }
    while(i<=mid) b[k++]=a[i++];
    while(j<=r) b[k++]=a[j++];
    for(i=l;i<=r;i++) a[i]=b[i];
}

void solve(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];

    msort(1,n);

    cout<<ans<<endl;
}
相关推荐
liuyao_xianhui4 分钟前
进程概念与进程状态_Linux
linux·运维·服务器·数据结构·c++·哈希算法·宽度优先
如君愿4 分钟前
考研复习 Day 26 | 习题--计算机网络第三章(数据链路层 下)、数据结构 多维数组与广义表
数据结构·计算机网络·考研·记录考研
bqq1986102611 分钟前
MySQL分库分表
数据结构·mysql
迷途之人不知返15 分钟前
List的模拟实现
数据结构·c++·学习·list
Chat_zhanggong3451 小时前
主推NT98336BG作用有哪些?
嵌入式硬件·算法
Run_Teenage1 小时前
算法:线段树
算法
Westward-sun.1 小时前
YOLOv2算法全方位解析:从BatchNorm到聚类先验框的九大改进
算法·yolo·聚类
扶苏xw1 小时前
【离散化算法】
算法
码之气三段.1 小时前
Codeforces Round 1095 (Div. 2) 补题
算法
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 189. 轮转数组 | C++ 三次反转经典魔法 (O(1) 空间)
c++·算法·leetcode