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

题解:AcWing 787 归并排序

【题目来源】

AcWing:787. 归并排序 - AcWing题库

【题目描述】

给定你一个长度为 \(n\) 的整数数列。

请你使用归并排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

【输入】

输入共两行,第一行包含整数 \(n\)

第二行包含 \(n\) 个整数(所有整数均在 \(1\sim 10^9\) 范围内),表示整个数列。

【输出】

输出共一行,包含 \(n\) 个整数,表示排好序的数列。

【输入样例】

5
3 1 2 4 5

【输出样例】

1 2 3 4 5

【解题思路】

image

【算法标签】

《AcWing 787 归并排序》 #归并排序#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 1000010;  // 定义数组最大容量int n;         // 数组元素个数
int q[N];      // 存储待排序的数组
int tmp[N];    // 归并排序使用的临时数组// 归并排序函数
void merge_sort(int q[], int l, int r) {// 递归终止条件:区间长度小于1时不需要排序if (l >= r) return;// 计算中点,分界点int mid = (l + r) >> 1;  // 等价于(l + r)/2// 递归排序左右两半merge_sort(q, l, mid);      // 排序左半部分merge_sort(q, mid + 1, r);  // 排序右半部分// 合并两个有序数组int k = 0;          // 临时数组的指针int i = l;          // 左半部分的指针int j = mid + 1;    // 右半部分的指针// 比较左右两部分的元素,按顺序放入临时数组while (i <= mid && j <= r) {if (q[i] <= q[j]) tmp[k++] = q[i++];  // 左边元素较小else tmp[k++] = q[j++];               // 右边元素较小}// 处理剩余元素(左半部分或右半部分可能还有剩余)while (i <= mid) tmp[k++] = q[i++];  // 左半部分剩余元素while (j <= r) tmp[k++] = q[j++];    // 右半部分剩余元素// 将临时数组中的有序元素复制回原数组for (i = l, j = 0; i <= r; i++, j++) {q[i] = tmp[j];}
}int main() {// 输入数据scanf("%d", &n);  // 读取元素个数for (int i = 0; i < n; i++) scanf("%d", &q[i]);  // 读取数组元素// 调用归并排序merge_sort(q, 0, n - 1);// 输出排序结果for (int i = 0; i < n; i++) printf("%d ", q[i]);return 0;
}

【运行结果】

5
3 1 2 4 5
1 2 3 4 5
http://www.jsqmd.com/news/397308/

相关文章:

  • 第1.4节 最优化理论基础 习题练习
  • 题解:AcWing 786 第k个数
  • CSS 网页布局
  • Servlet 数据库访问
  • YOLO26改进26:全网首发--C3k2融合自研创新模块C3k2_GhostDynamicConv
  • YOLO26改进27:全网首发--C3k2融合自研改进模块RVB_EMA
  • jEasyUI 创建页脚摘要
  • MySQL 删除数据表
  • centos7 中 安装docker与使用
  • Ruby Socket 编程
  • Spring IOC容器:Bean生命周期与循环依赖解决
  • 2/20
  • 2026排阻行业佼佼者,这些厂商表现亮眼,低温漂高精密电阻/抗浪涌电阻/荣誉代理/排阻,排阻公司哪家强 - 品牌推荐师
  • Python use schedule as recycle timer
  • 被小黄狗唤醒的碎碎念
  • 提示工程架构师看过来!AI提示工程质量保证的10大关键维度
  • 大数据领域ClickHouse的权限管理与审计
  • 解析AI原生应用领域思维框架的独特魅力
  • HBase与Presto集成:交互式查询解决方案
  • 芒格的“数学期望“思维:提高投资决策的准确性
  • 深度探索ing!提示工程架构师在虚拟助手中的应用奥秘大公开
  • GitHub 热榜项目 - 日榜(2026-02-20)
  • Python-flask框架的网约车个人出行顺风车在线打车租车系统出租管理平台-Pycharm django
  • IDEA创建多级包时显示在同一行怎么办
  • Python-flask框架餐饮连锁店点餐食材采购管理系统的设计与实现-Pycharm django
  • 《牛津谋杀案》电影解析
  • Python-flask框架的留守儿童心理辅导网站的设计与实现-Pycharm django
  • 大数据领域开放数据的应用场景拓展
  • Python-flask框架的积分制零食自选超市商城销售平台的设计与实现-Pycharm django
  • Python-flask框架大学生心理测评分析社交系统-Pycharm django