1124: 两个有序数组合并
时间限制: 1 Sec 内存限制: 128 MB
[状态] [讨论版] [提交] [命题人:admin]
题目描述
已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
输入
输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。
输出
输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。
样例输入 Copy
4 1 2 5 7
3 6 4 2
样例输出 Copy
7 6 5 4 2 2 1
提示
试图排序的孩子们要小心了~~~~~~
参考代码
#include <stdio.h>
int a[100000],b[1000000];
int main()
{
int m, n, i, j, k=0;
scanf("%d", &m);
for(i=m-1;i>=0;i--)
scanf("%d", &a[i]);
scanf("%d", &n);
for(j=0;j<n;j++)
scanf("%d", &b[j]);
i=0,j=0;
int c[m+n];
while(i<m&&j<n)
{
if(a[i]>b[j])
{
c[k]=a[i];
k++;
i++;
}
else
{
c[k]=b[j];
k++;
j++;
}
}
while(i<m)
{
c[k]=a[i];
k++;
i++;
}
while(j<n)
{
c[k]=b[j];
k++;
j++;
}
for(k=0;k<m+n;k++)
printf("%d ", c[k]);
return 0;
}