AcWing - 归并排序(归排)
发布日期:2021-07-01 00:21:44
浏览次数:3
分类:技术文章
本文共 1127 字,大约阅读时间需要 3 分钟。
题目链接:
时/空限制:1s / 64MB题目描述
给定你一个长度为n的整数数列。
请你使用归并排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式
输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在1~10^9范围内),表示整个数列。
输出格式
输出共一行,包含 n 个整数,表示排好序的数列。
数据范围
1≤n≤100000
输入样例
5
3 1 2 4 5
输出样例
1 2 3 4 5
解题思路
题意:将一个整数数列从小到大排个序。
思路:因为就是练习归排的,所以就用归并排序写了。Accepted Code:
/* * @Author: lzyws739307453 * @Language: C++ */#includeusing namespace std;const int MAXN = 1e5 + 5;int spt[MAXN];void Merge_Sort(int Q[], int l, int r) { if (l >= r) return ; int mid = l + (r - l >> 1); Merge_Sort(Q, l, mid); Merge_Sort(Q, mid + 1, r); int k = 0, i = l, j = mid + 1; int *tmp = (int *)malloc((r - l + 1) * sizeof(int)); 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 (int i = 0; i < k; i++) Q[l + i] = tmp[i];}int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", spt + i); Merge_Sort(spt, 0, n - 1); for (int i = 0; i < n; i++) printf("%d ", spt[i]); printf("\n"); return 0;}
转载地址:https://lzyws739307453.blog.csdn.net/article/details/99824659 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年05月02日 18时16分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SnapEx的新感觉,对新手很友好
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2019-05-01
区块链技术应用,最先医疗行业
2019-05-01
新币上市旧币会降价吗
2019-05-01
跨市场套利怎么处理
2019-05-01
当博士进入币圈会怎么样
2019-05-01
以太坊技术分解
2019-05-01
如何验证以太坊技术安全性
2019-05-01
委员会怎么验证比特币真伪
2019-05-01
PHP之 使用PHPMailer插件实现邮件发送功能
2019-05-01
《增长黑客》(肖恩·艾利斯)学习笔记——第二部分 实战
2019-05-01
python使用HTMLTestRunner查看运行函数
2019-05-01
python的ImportError
2019-05-01
linux下安装jenkins+git+python
2019-05-01
windows10家庭版开启组策略
2019-05-01
解决uiautomatorviewer中添加xpath的方法
2019-05-01
性能测试的必要性评估以及评估方法
2019-05-01
Spark学习——利用Mleap部署spark pipeline模型
2019-05-01
Oracle创建表,修改表(添加列、修改列、删除列、修改表的名称以及修改列名)
2019-05-01