首页/新闻资讯/正文详情

ACM 基本排序算法,归并排序(求逆序对)

发布时间:2026/9/27 6:46:21 来源:云帆数科 栏目:资讯中心
ACM 基本排序算法,归并排序(求逆序对)
1.归并排序主要运用到的的思想分治、递归功能1.数组进行排序。2.计算数组中的逆序对的个数。时间复杂度稳定的Onlogn空间复杂度On附上模板代码#includebits/stdc.husingnamespacestd;longlongMerge(inta[],intb[],ints,intm,inte){intis,jm1,ks;longlongans0;while(imje){if(a[i]a[j])b[k]a[i];else{b[k]a[j];//求逆序对ansmid-i1;}}while(im)b[k]a[i];while(je)b[k]a[j];for(intns;ne;n)a[n]b[n];returnans;}voidmergesort(inta[],intb[],ints,inte){longlongans0;if(se){intm(se)/2;mergesort(a,b,s,m);mergesort(a,b,m1,e);ansMerge(a,b,s,m,e);}}inta[100005];intb[100005];intmain(){intn;cinn;for(inti1;in;i){cina[i];}mergesort(a,b,1,n);for(inti1;in;i){couta[i] ;}return0;}2.冒泡排序主要思想不断交换相邻两个逆序的元素。最终将最大排在最后类似于可乐冒泡。时间复杂度On²)空间复杂度On#includebits/stdc.husingnamespacestd;voidbubbleSort(inta[],intn){for(inti1;in;i){//n-1趟for(intj1;jn-i1;j){//除去已经排好的i个所以是枚举n-i1个if(a[j1]a[j]){intta[j1];a[j1]a[j];a[j]t;}}}}inta[100005];intmain(){intn;cinn;for(inti1;in;i){cina[i];}bubbleSort(a,n);for(inti1;in;i){couta[i] ;}return0;}3.选择排序主要思想通过与n次n为数组的长度的选择可以将每次当前为选择的最大最小的元素放在相应位置上。时间复杂度On²)空间复杂度On#includebits/stdc.husingnamespacestd;voidselectSort(inta[],intn){for(inti1;in;i){intMini;for(intji1;jn;j){if(a[j]a[Min]){Minj;}}intta[Min];a[Min]a[i];a[i]t;}return;}inta[100005];intmain(){intn;cinn;for(inti1;in;i){cina[i];}selectSort(a,n);for(inti1;in;i){couta[i] ;}return0;}4.插入排序主要思想两层for循环第一层表示接下来要将前i个排好序第二个for循环用于通过比较判断第i个元素应该放在1~i的哪个位置上时间复杂度On²)空间复杂度On#includebits/stdc.husingnamespacestd;voidInsertSort(vectorinta,intlen){for(inti1;ilen;i){inttempa[i];for(intji-1;j0;--j){if(tempa[j]){a[j1]a[j];}else{a[j1]temp;break;}}}return;}intmain(){intn;cinn;vectorinta(n);for(inti0;in;i){cina[i];}InsertSort(a,n);for(inti0;in;i){couta[i] ;}return0;}5.希尔排序主要思想可以认为是插入排序的plus版内部多了有个增量因子i3*i1作为每轮插入排序中第二个for‘循环每次结束后的增加量时间复杂度On^1.5)左右空间复杂度On#includebits/stdc.husingnamespacestd;typedeflonglongll;constintMAXN100005;inta[MAXN],n;voidinsertionSort(inta[],intn,intg){for(inti1g;in;i){inttempa[i],ji-g;for(;j1;j-g){if(a[j]temp){a[jg]a[j];}elsebreak;}a[jg]temp;}}voidshellSort(inta[],intn){vectorintG;for(inti1;in;){G.push_back(i);i3*i1;}for(intiG.size()-1;i0;i--){insertionSort(a,n,G[i]);}}intmain(){scanf(%d,n);for(inti1;in;i){scanf(%d,a[i]);}shellSort(a,n);for(inti1;in;i){printf(%d ,a[i]);}return0;}

相关推荐

不只是右键菜单:ContextMenu Manager Plus 管理“新建“、“发送到“与 Win+X 特殊菜单全指南
不只是右键菜单:ContextMenu Manager Plus 管理“新建“、“发送到“与 Win+X 特殊菜单全指南

不只是右键菜单:ContextMenu Manager Plus 管理"新建"、"发送到"与 WinX 特殊菜单全指南 【免费下载链接】ContextMenuMgr Context Menu Manager Plus 是一个强大的实用程序,它可帮助您管理 Windows 上的右键菜单,并避免… · 2026/9/27 6:46:21

Linux安装RocketMQ单机版教程废弃
Linux安装RocketMQ单机版教程废弃

Linux安装RocketMQ单机版教程目录下载安装包修改变量启动停止测试另外程序运行时报错:目录 下载安装包 官方仓库各个下载地址:http://rocketmq.apache.org/release_notes/ RocketMQ4.7.1直连下载https://www.apache.org/dyn/closer.cgi?pathrocketmq/4.7.1/rocketmq-all-4.7… · 2026/9/27 6:46:21

抗疲劳镜片戴多久能适应?/钟祥极博视科普
抗疲劳镜片戴多久能适应?/钟祥极博视科普

过了40岁,眼睛越来越“不听话”了?在钟祥,很多街坊都有这种感觉——年轻时眼睛好使得很,现在看手机屏幕上的字,得拿远一点才看得清;看药盒上的说明书,眯着眼半天也对不上焦。尤其是每天要对着电… · 2026/9/27 6:46:21

MySQL数据库设计与规范
MySQL数据库设计与规范

在信息化时代,数据库的设计与使用成为构建任何信息系统的核心环节。如何设计一个高效且规范化的数据库,直接影响系统的可扩展性、数据的完整性与一致性。规范化的数据库设计不仅能提高数据处理效率,还可以避免冗余和不必要的错误。 在这个教程中,将探讨数据库设计的核心原… · 2026/9/27 7:31:09

新手入门网站页面设计代码,3招避开建站公司高价坑
新手入门网站页面设计代码,3招避开建站公司高价坑

新手入门网站页面设计代码,3招避开建站公司高价坑 找建站公司报价三万五,自己写代码只要花三百块买服务器?别被销售的话术绕晕了。很多新手刚入行,看着那些花里胡哨的Demo,心里直打鼓:这代码到底值不值这个价?其实, 网站页面设计代码… · 2026/9/27 7:31:09

MySQL主键、外键与约束
MySQL主键、外键与约束

在数据库设计中,关系型数据库依赖于良好的结构和约束来确保数据的完整性和一致性。主键、外键和各种约束在数据库设计中扮演着至关重要的角色。理解这些概念及其应用是构建可靠数据库的基础。 在本教程中,重点介绍主键、外键和常见的约束类型,如唯一性约束和非空约束,结合… · 2026/9/27 7:31:09

MySQL索引与查询优化
MySQL索引与查询优化

在数据库系统中,索引是一个重要的概念,用于提升查询性能。在处理大规模数据时,如何优化查询以获得更高的性能,是每一位开发者都必须掌握的技能。索引的存在能够加速数据检索的速度,减少系统的资源消耗。然而,索引并非万能,错误的索引使用可能会导致查询性能的下降,甚至… · 2026/9/27 7:31:09

MySQL外连接与子查询
MySQL外连接与子查询

数据库管理和操作是编程过程中至关重要的一环,而在进行复杂数据查询时,外连接和子查询的使用是非常常见且重要的。理解这两者的概念和应用场景,不仅可以提高数据查询的灵活性,还能让查询结果更加精准和有效。 本文将深入探讨 MySQL 中的外连接(LEFT JOIN 和 RIGHT JOIN)… · 2026/9/27 7:31:03

OrchardCore Display Drivers 权威指南:为内容部件、字段与模型构建 Shape 的完整实现方案
OrchardCore Display Drivers 权威指南:为内容部件、字段与模型构建 Shape 的完整实现方案

CMS后端Web框架 【免费下载链接】OrchardCore Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework. 项目地址: https://gitcode.com… · 2026/9/27 7:30:32

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码