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

AcWing 787:归并排序

【题目来源】
https://www.acwing.com/problem/content/789/

【题目描述】
给定你一个长度为 n 的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。

【输入格式】
输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。

【输出格式】
输出共一行,包含 n 个整数,表示排好序的数列。

【数据范围】
1≤n≤100000

【输入样例】
5
3 1 2 4 5

【输出样例】
1 2 3 4 5

【算法分析】
● 归并排序是一种常用且高效的排序算法,它采用分治法的思想来对序列进行排序。归并排序的基本思想是将序列分成较小的子序列,递归地对这些子序列进行排序,然后将它们合并在一起,产生最终的有序序列。归并排序模拟示意图如下所示。

● 归并排序采用分治法的思想来对序列进行排序,它的 mid 值是取待排序列的中间位置的元素序号作为基准值。归快速排序算法 https://blog.csdn.net/hnjzsyjyj/article/details/132669946 虽然也是采用分治法的思想来对序列进行排序,但是它的 mid 值是取待排序列的中间位置的元素值作为基准值。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
int a[maxn], tmp[maxn];void merge_sort(int v[],int le,int ri) {if(le>=ri) return;int mid=le+ri>>1;merge_sort(v,le,mid);merge_sort(v,mid+1,ri);int k=0;int i=le,j=mid+1;while(i<=mid && j<=ri) {if(v[i]<=v[j]) tmp[k++]=v[i++];else tmp[k++]=v[j++];}while(i<=mid) tmp[k++]=v[i++];while(j<=ri) tmp[k++]=v[j++];k=0;for(int i=le; i<=ri; i++) {a[i]=tmp[k++];}
}int main() {int n;scanf("%d",&n);for(int i=0; i<n; i++) scanf("%d",&a[i]);merge_sort(a,0,n-1);for(int i=0; i<n; i++) printf("%d ",a[i]);return 0;
}/*
in:
5
3 1 2 4 5out:
1 2 3 4 5
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/119760879
https://blog.csdn.net/hnjzsyjyj/article/details/119787188
https://blog.csdn.net/hnjzsyjyj/article/details/119768122

https://www.acwing.com/solution/content/27445/





 

http://www.lryc.cn/news/154607.html

相关文章:

  • SeamlessM4T—Massively Multilingual Multimodal Machine Translation
  • Python数据分析-Numpy
  • 【真题解析】系统集成项目管理工程师 2023 年上半年真题卷(案例分析)
  • 【GAMES202】Real-Time Global Illumination(in 3D)—实时全局光照(3D空间)
  • 金蝶云星空二开,公有云执行SQL
  • JAVA String 二维的字符串数组 String[][]
  • 【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?
  • el-dialog设置高度、使用resetFields清除表单项无效问题
  • MySql切换到达梦数据库,各种问题解决记录
  • 2023开学礼山东财经大学《乡村振兴战略下传统村落文化旅游设计》许少辉新财经图书馆
  • vscode中使用eslint+prettier的配置
  • HTML 标签讲解
  • ue5 小知识点 ue的world type,pie editor game
  • 两表union 如何保证group by 字段唯一
  • 【⑰MySQL】 变量 | 循环 | 游标 | 处理程序
  • 如何在arXiv上发表一篇文章
  • 重要性采样
  • 说说Omega架构
  • 高忆管理:光刻胶概念强势拉升,同益股份、格林达涨停
  • 计算机图形学线性代数相关概念
  • 开源PHP 代挂机源码,可对接QQ、网易云、哔哩哔哩、QQ空间、等级加速等等
  • 【仿牛客论坛java项目】第五章 Kafka,构建TB级异步消息系统:阻塞队列、Kafka入门、Spring整合Kafka、发送系统通知、显示系统通知
  • 【AIGC专题】Stable Diffusion 从入门到企业级实战0401
  • Matlab信号处理1:模拟去除信号噪声
  • Bootstrap的行、列布局设计(网络系统设计)
  • 1.1 计算机网络在信息时代中的作用
  • mysql CONCAT使用
  • maven基础学习
  • uniapp移动端地图,点击气泡弹窗并实现精准定位
  • 2023牛客暑期多校训练营7 CI「位运算」「根号分治+容斥」