1124 两个有序数组合并

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1124
Description
已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
Input
输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。
Output
输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。
Sample Input
4 1 2 5 7
3 6 4 2
Sample Output
7 6 5 4 2 2 1
题意描述:
输入m和m个数,n和n个数(m, n均小于等于1000000)
将两个数组按降序排列输出
解题思路:
将数组a和数组b存进c,对c进行降序排列,输出即可
程序代码:

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 bool cmp(int x,int y)
 5 {
 6     return x>y;
 7 }
 8 int a[1000010],b[1000010];
 9 int main()
10 {
11     int m,n,i,j;
12     while(scanf("%d",&m) != EOF)
13     {
14         for(i=1;i<=m;i++)
15             scanf("%d",&a[i]);
16         
17         scanf("%d",&n);
18         for(i=1;i<=n;i++)
19             scanf("%d",&b[i]);
20         
21         int c[m+n+1];
22         for(i=1;i<=m;i++)
23             c[i]=a[i];
24         for(j=m+1,i=1;i<=n;i++)
25             c[j++]=b[i];
26         
27         sort(c+1,c+m+n+1,cmp);
28         
29         printf("%d",c[1]);
30         for(i=2;i<=m+n;i++)
31             printf(" %d",c[i]);
32         printf("\n");
33     }
34     return 0;
35  } 

 


易错分析:
注意sort函数中起始地址和终止地址

posted @ 2017-05-01 22:22  Reqaw  阅读(590)  评论(0编辑  收藏  举报