归并排序是经典的排序算法之一,是分治思想的体现。虽然在排序大多用sort就能搞定,但是有些题用可以用归并顺带就解决掉了(比如求逆序对)。

归并排序大概就是先将整个序列分为足够小的片段,然后在每个小片段里面进行排序,然后再依次合并,排序。过程如下图 (图源@努力的老周) 。

接下来用洛谷里一道求逆序对的题来用代码进行展示:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e5+5;
int a[N],b[N];
int n,x;
int ans;
void merge_pai(int l, int mid, int r)
{int i=l, j=mid, k=l;while(i<mid&&j<=r){if(a[i]<=a[j])//小的那个先合进去b[k++]=a[i++];else{b[k++]=a[j++];ans+=mid-i;//此时加上前面所有大于的就是逆序对的数量}}while(i<mid) b[k++]=a[i++];//把前半部分剩余的给加上while(j<=r) b[k++]=a[j++];//加上后半部分剩余的for(int i=l; i<=r; i++)a[i]=b[i];
}
void merge_sort(int l, int r)
{if(l>=r) return ;int mid=(l+r)/2;merge_sort(l,mid);//将序列分为前半部分merge_sort(mid+1,r);//和后半部分merge_pai(l,mid+1,r);//将此时序列进行排序
}
void solve()
{cin >> n;for(int i=1; i<=n; i++) cin >> a[i];merge_sort(1,n);//开始分cout << ans;
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t=1;
//	cin >> t;while(t--) solve();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/80802.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/80802.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/80802.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍

PPT下载地址&#xff1a;https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中&#xff0c;Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…

有效的聚水潭数据集成到MySQL案例

聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中&#xff0c;我们将探讨如何通过轻易云数据集成平台&#xff0c;将聚水潭的采购退货单数据高效、准确地集成到MySQL数据库中的BI云妃秀采购退货表。这个过程不仅需要处理大量的数据&#xff0c;还要确保数据的完整性和实…

win11 VSCode 强制弹窗微软登录

今天在一台新电脑上配置VSCode同步的时候&#xff0c;用了微软账号&#xff0c;因为这台电脑比较特殊&#xff0c;不方便科学上网&#xff0c;所以一开始用的微软账户登录&#xff0c;导致和GitHub账号登录的配置、扩展等等不同步。 后面准备改用GitHub账号登录发现不行&#…

Milvus 全面解析

Milvus是鹰科鹰属的一种猛禽,以飞行速度快、视力敏锐和适应能力强而闻名。 Zilliz 以其开源高性能、高可扩展性矢量数据库 Milvus 命名,该数据库可在从笔记本电脑到大型分布式系统等各种环境中高效运行。它既可以作为开源软件使用,也可以作为云服务使用。 Milvus 由 Zilli…

【复刻】人工智能技术应用如何影响企业创新(2007-2023年)

AI 技术如何推动企业创新&#xff0c;是新质生产力形成与发展的核心问题。深入研究这一议题&#xff0c;有助于为当前的创新管理实践提供有效方案&#xff0c;进而助力中国经济实现高质量发展。参照李玉花&#xff08;2024&#xff09;的做法&#xff0c;对来自中国工业经济《人…

快消零售AI转型:R²AIN SUITE如何破解效率困局

引言 快消零售行业正经历从“规模扩张”到“精益运营”的转型阵痛&#xff0c;消费者需求迭代加速、供应链复杂度攀升、人力成本持续走高&#xff0c;倒逼企业通过技术升级实现业务重塑[1]。RAIN SUITE以AI应用中台为核心&#xff0c;针对快消零售场景打造全链路提效方案&…

计算机网络八股文--day1

从浏览器输入url到显示主页的过程&#xff1f; 1. 浏览器查询域名的IP地址 2. 浏览器和服务器TCP三次握手 3. 浏览器向服务器发送一个HTTP请求 4. 服务器处理请求&#xff0c;返回HTTP响应 5. 浏览器解析并且渲染页面 6. 断开连接 其中使用到的协议有DNS协议&#xff08…

Vector和list

一、Vector和list的区别——从“它们是什么”到“区别在哪儿” 1. 它们是什么&#xff1f; Vector&#xff1a;类似于一排排整齐的书架&#xff08;数组&#xff09;&#xff0c;存放元素时&#xff0c;元素排成一条线&#xff0c;连续存储。可以很快通过编号&#xff08;索引…

VCS X-PROP建模以及在方针中的应用

VCS X-PROP建模以及在方针中的应用 摘要&#xff1a;VCS X-Prop&#xff08;X-Propagation&#xff09;是 Synopsys VCS 仿真工具中的一种高级功能&#xff0c;用于增强 X 态&#xff08;未知态&#xff09;和 Z 态&#xff08;高阻态&#xff09;在 RTL 仿真中的建模和传播能力…

HPE ProLiant DL360 Gen11 服务器,配置 RAID 5 教程!

今天的任务&#xff0c;是帮客户的一台HPE ProLiant DL360 Gen11 服务器&#xff0c;配置RAID 5。依然是按照我的个人传统习惯&#xff0c;顺便做一个教程&#xff0c;分享给有需要的粉丝们。如果你在实际操作中&#xff0c;遇到了什么问题&#xff0c;欢迎在评论区留言&#x…

PyTorch深度神经网络(前馈、卷积神经网络)

文章目录 神经网络概述神经元模型多层感知机前馈神经网络网络拓扑结构数学表示基本传播公式符号说明整体函数视角 卷积神经网络卷积神经网络发展简史第一代&#xff08;1943-1980&#xff09;第二代&#xff08;1985-2006&#xff09;第三代&#xff08;2006-至今&#xff09;快…

三轴云台之控制算法协同技术篇

三轴云台的控制算法协同技术是确保云台在复杂动态环境下实现高精度、高稳定性运动控制的核心&#xff0c;其技术体系涵盖多传感器融合、多算法协同以及多目标优化三个关键维度。以下从技术架构与实现路径展开分析&#xff1a; 一、多传感器融合&#xff1a;构建环境感知基础 三…

Adobe DC 2025安装教程

一.软件下载 点此下载 二.软件安装

[Java实战]Spring Boot 整合 Freemarker (十一)

[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎&#xff0c;凭借其简洁语法、卓越性能和灵活扩展性&#xff0c;在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力&#xff0c;开发者能快速构建动态页面、…

DeepSeek:开启能源领域智能化变革新时代

目录 一、DeepSeek 与能源领域变革的邂逅1.1 DeepSeek 在人工智能领域的地位与特点1.2 能源行业面临的挑战与变革需求1.3 DeepSeek 在能源领域应用的重要性和意义 二、能源政策解读与科普新助手2.1 能源政策解读的深度变革2.2 能源科普的创新使者 三、能源项目可行性分析新利器…

uniapp设置 overflow:auto;右边不显示滚动条的问题

设置了overflow&#xff1a;auto;或者其它overflow的属性不显示滚动条是因为在uniapp中默认隐藏了滚动条 解决方法&#xff1a; //强制显示滚动条 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//设置滚动条颜色.cu-…

hyper-v安装ubuntu后时磁盘空间扩容

使用hyper-v创建虚拟机Ubuntu 22.04&#xff0c;直接使用的是磁盘镜像&#xff0c;原磁盘空间只有12GB&#xff0c;明显不够用呀&#xff0c;现在想要扩展到50GB&#xff0c;准备开始。 1、先关闭Ubuntu&#xff0c;再hyper-v管理器中调整磁盘容量到50GB 2、进入虚拟机 3、准备…

Prometheus 的介绍与部署(入门)

一、什么是Prometheus&#xff1b; 1.介绍 Prometheus 是一个功能强大的监控工具&#xff0c;适用于各种环境。通过简单的安装和配置&#xff0c;可以快速实现对系统和服务的监控。无论是单机环境、容器化环境还是 Kubernetes 集群&#xff0c;Prometheus 都能提供灵活…

Angular 知识框架

一、Angular 基础 1. Angular 简介 Angular 是什么&#xff1f; 基于 TypeScript 的前端框架&#xff08;Google 维护&#xff09;。 适用于构建单页应用&#xff08;SPA&#xff09;。 核心特性 组件化架构 双向数据绑定 依赖注入&#xff08;DI&#xff09; 模块化设计…

注解和 XML 两种方式有什么区别?

注解和 XML 是两种常见的配置方式&#xff08;尤其在 Java 开发中&#xff0c;如 Spring 框架&#xff09;&#xff0c;它们的主要区别体现在配置方式、代码耦合性、可读性、维护性等方面。以下是两者的对比&#xff1a; 1. 配置方式 注解&#xff08;Annotation&#xff09; 在…