当前位置: 首页 > news >正文

题解:学而思编程 逆序对

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

学而思编程:逆序对

【题目描述】

对于一个包含N NN个非负整数的数组A [ 1.. n ] A[1..n]A[1..n],如果有i < j i<ji<j,且A [ i ] > A [ j ] A[i]>A[j]A[i]>A[j],则称( A [ i ] , A [ j ] ) (A[i],A[j])(A[i],A[j])为数组A AA中的一个逆序对。

例如,数组( 3 , 1 , 4 , 5 , 2 ) (3,1,4,5,2)(31452)的逆序对有( 3 , 1 ) , ( 3 , 2 ) , ( 4 , 2 ) , ( 5 , 2 ) (3,1),(3,2),(4,2),(5,2)(3,1),(3,2),(4,2),(5,2),共4 44个。

给定一个数组,求该数组中包含多少个逆序对。

【输入】

第一行,一个数n nn,表示数组中有n nn个数。

第二行n nn个数,表示给定的数组。数组中每个数字不超过10 9 10^9109

【输出】

输出数组中逆序对的数目。

【输入样例】

6 5 4 2 6 3 1

【输出样例】

11

【算法标签】

#归并排序

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=500005;intn;// 数组长度inta[N],b[N];// a: 原始数组, b: 临时数组intans;// 逆序对数量// 归并排序函数,计算逆序对数量voidmerge_sort(intl,intr){if(l==r)return;// 如果子数组只有一个元素,则不需要排序,直接返回intmid=(l+r)/2;// 计算中点merge_sort(l,mid);// 递归地对左半部分进行归并排序merge_sort(mid+1,r);// 递归地对右半部分进行归并排序intx=l,y=mid+1;// x: 左半部分的指针, y: 右半部分的指针intcnt=l-1;// b数组的指针// 合并两个有序子数组while(x<=mid&&y<=r)// 只要左右两端子数组都不为空{if(a[x]<=a[y])// 将两段子数组左端点较小者插入b数组{b[++cnt]=a[x];// 左半部分元素较小x++;}else// 右半部分元素较小{b[++cnt]=a[y];// 右半部分元素较小y++;ans+=mid-x+1;// 统计逆序对数量}}// 合并过程中其中一个子数组的元素已全部合并完成,而另一个子数组仍有剩余元素的情况for(inti=x;i<=mid;i++)// 如果左半部分还有剩余的元素,将它们复制到b中{b[++cnt]=a[i];}for(inti=y;i<=r;i++)// 如果右半部分还有剩余的元素,将它们复制到b中{b[++cnt]=a[i];}for(inti=l;i<=r;i++)// 将b中已经排序好的部分复制回a中,完成合并{a[i]=b[i];}}signedmain(){cin>>n;// 读取数组长度for(inti=1;i<=n;i++)// 读取数组元素{cin>>a[i];}merge_sort(1,n);// 调用归并排序函数cout<<ans<<endl;// 输出逆序对数量return0;}

【运行结果】

6 5 4 2 6 3 1 11
http://www.rkmt.cn/news/1505771.html

相关文章:

  • MPC8323E处理器接口电气特性与PCB布局实战指南
  • AI Agent 系统设计:工具调用的容错机制与回退策略
  • 粤鄂湘三地车牌识别工程:含定位、分割、汉字识别与双模型(SVM+ANN)实现
  • 医疗数据集成终极指南:5分钟掌握Mirth Connect核心实战
  • PCA9533 I2C LED驱动芯片:GPIO扩展与PWM调光实战指南
  • MSC7118 DSP时钟、DDR与电源时序设计实战指南
  • 搬家寄大件快递怎么省钱?比价攻略来了 - 快递物流资讯
  • 终极指南:如何使用Auto_Simulated_Universe实现崩坏星穹铁道模拟宇宙全自动挂机
  • 2026 深圳黄金回收优质渠道盘点 本地贵金属变现攻略 - 靖昱黄金回收
  • Apache SeaTunnel 5 月月报:87 个 PR 合入,多维度升级功能、优化性能与修复 Bug
  • VRCX:重新定义VRChat社交管理的智能伴侣
  • 2026年 重庆磷酸二氢钾/磷酸氢二钾/磷酸二氢钠/磷酸氢二钠/磷酸三钠厂家推荐:稳定品质与精准应用的化工源头之选 - 品牌发掘
  • XXL-Job调度中心‘隐身’记:如何在不暴露Admin页面的情况下,让它在你的SpringCloud微服务里默默干活
  • 卫生间漏水到楼下怎么查找漏水点?2026吕梁24小时上门维修电话TOP7机构推荐,免费勘察+精准定位,专业师傅处理屋顶墙体洗手间暗管漏水 - 一休咨询
  • 具身智能数据产业链揭秘:从采集员到独角兽,数据复售模式能走多远?
  • 天津河西防水补漏哪家靠谱?2026正规修缮公司排名实测(全区通用) - 苏易房屋修缮
  • 2026重庆奢侈品首饰回收实测盘点|正规渠道甄选与高价出货全攻略 - 薛定谔的梨花猫
  • Teamspeak 3音效管理插件配置教程:提升团队沟通体验的完整指南
  • 2026年OpenClaw/Hermes Agent配置Token Plan快速上手指南
  • FanControl V269:Windows电脑风扇控制的终极解决方案,告别噪音烦恼!
  • 如何在5分钟内掌握Sketch MeaXure设计标注神器
  • 082、视频 ISP 的实时性挑战:30和60FPS 下的 ISP Pipe 耗时预算与并行化策略
  • 多智能体协同新范式
  • 企业邮箱新手避坑:2026操作友好度高的好用款分享
  • 崩坏星穹铁道自动化革命:三月七小助手如何重塑你的游戏体验
  • 019华夏之光永存,助力国家科技破局:EDA软件核心算法(布局布线、光学邻近效应修正OPC)工程落地终版
  • 经典8位MCU P87C554低功耗设计原理与实战配置详解
  • 30分钟搭建AI智能交易系统:从零到一的完整量化投资指南
  • 2026济南钻石回收实测:6大平台横向对比,TOP1的专业度藏不住 - 薛定谔的梨花猫
  • 大模型 API 编排:多模型路由与降级策略的工程实践