归并排序 & 逆序对

归并排序(稳定)

逆序对

例题:洛谷 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;
}
相关推荐
noipp2 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
程序员二叉3 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木3 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕4 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠4 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠5 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe15 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_116 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue6 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
不好听6137 小时前
深入理解链表:线性数据结构的另一面
javascript·数据结构