【2010】合并两个有序数列
两个 合并 有序 数列 2010
2023-09-14 09:03:46 时间
Time Limit: 3 second
Memory Limit: 2 MB
用合并的方法把两个有序数列a,b合并为一个新的有序数列c;
算法是:比较a和b,把两者小的数放到c中,一直继续此操作。
Input
第一行输入数列a的元素个数
第二行依次输入a的元素
第三行输入数列b的元素个数
第四行依次输入b的元素
Output
输出合并后的数列c,每个元素用空格隔开,最后用回车结束
Sample Input
3 7 17 19 4 8 24 34 40
Sample Output
7 8 17 19 24 34 40
【题解】
直接把两行数字输入进一个数组,然后用快排 或者是冒泡排下序就可以了。
【代码】
#include <cstdio> const int MAXN = 50000; int n,a[MAXN],x,y; void input_data() { int j = 0; scanf("%d",&x); for (int i = 1;i <= x;i++) { j++; scanf("%d",&a[j]); } scanf("%d",&y); for (int i = 1;i <= y;i++) { j++; scanf("%d",&a[j]); } n = x + y; //也可以写成 n = j。 } void q_sort(int l,int r) //快排 { int i = l, j = r, m = a[(i+j)/2]; do { while (a[i] < m) i++; while (m < a[j]) j--; if (i <=j ) { int t = a[i]; a[i] = a[j]; a[j] = t; i++;j--; } } while ( i <= j); if (l < j) q_sort(l,j); if (i < r) q_sort(i,r); } void output_ans() { for (int i = 1; i <= n-1;i++) printf("%d ",a[i]); printf("%d\n",a[n]); } int main() { input_data(); q_sort(1,n); output_ans(); return 0; }
相关文章
- 21. 合并两个有序链表
- 88. 合并两个有序数组
- 21. 合并两个有序链表
- 数据结构007:合并两个有序链表
- 【剑指offer|3.合并两个有序的数组】
- 【力扣/牛客刷题】27. 移除元素 || 26. 删除有序数组中的重复项 || 88. 合并两个有序数组
- 算法-合并两个排序的链表详解编程语言
- 两个List合并去重详解编程语言
- MySQL如何合并两个表(mysql把两个表合并)
- 算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组详解编程语言
- 辉瑞和Moderna接近两个重要的里程碑 因FDA正全面推动疫苗审查工作
- 比较比较Oracle中两个日期的差异(oracle日期之间)
- 1. Linux操作系统简介:初学者必知的基础知识2. Linux与Windows有哪些不同?比较一下两者的优劣势(linux.两个)
- MySQL的数据统计一种简单的方法是将两个表合并(mysql两表合并统计)
- 表的合并Oracle数据表融合两个不同的表的统一(oracle两张不同数据)
- 配置Oracle实现双监听模式(oracle两个监听、)
- Oracle两个IP端口完全相同(oracle两个ip相等)
- 计算两个时间之差的函数
- 在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
- Python中实现两个字典(dict)合并的方法