归并排序 & 逆序对

归并排序(稳定)

逆序对

例题:洛谷 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;
}
相关推荐
Benny_Tang4 分钟前
「雅礼集训 2018 Day7」A 题解
数据结构·c++·算法
Doubbbbbbble云14 分钟前
跳表结构在高并发系统中的应用与优势分析4
算法
TAN-90°-16 分钟前
Deep Learning for Computer Vision——Large Scale Distributed Training
人工智能·深度学习·神经网络·算法·机器学习·计算机视觉·语言模型
Lyyaoo.26 分钟前
【回溯】【中等】全排列
java·数据结构·算法
写后端的胖头鱼30 分钟前
一文讲懂JVM与调优
jvm·后端·算法·架构·jvm调优
土司大王38 分钟前
LeetCode 79 单词搜索:Java 回溯模板、网格 DFS 与剪枝优化
java·算法·leetcode·深度优先
ECT-OS-JiuHuaShan42 分钟前
哲学是迭代学,数学是拓扑学
开发语言·人工智能·学习·算法·机器学习·php·拓扑学
All for pursuit.1 小时前
【数组-5】560.和为K的子数组
数据结构·c++·算法·leetcode
星子yu1 小时前
【Java数据结构】二叉树 好像就这样?
java·数据结构
Beyond_System|系统之外1 小时前
【学编程】Python基础编程题100道(1-20)
java·数据结构·算法