两个有序数列的合并

题目描述

已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。

输入

输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。

输出

输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。

样例输入

4 1 3 5 7 3 6 4 2

样例输出

7 6 5 4 3 2 1

提示

试图排序的孩子们要小心了~~~~~~

 1 # include <stdio.h>
 2 # define N 1000010
 3 int a[N], b[N], c[2 * N];
 4 int main ()
 5 {
 6     int i, j, k, m, n, flag = 0;
 7     scanf("%d", &m);
 8     for (i = m - 1; i >= 0; i--)
 9         scanf("%d", &a[i]);
10  
11     scanf("%d", &n);
12     for (j = 0; j < n; j++)
13         scanf("%d", &b[j]);
14     i = 0;
15     j = 0;
16     k = 0;
17     while (i < m && j < n)
18     {
19         if (a[i] > b[j])
20             c[k++] = a[i++];
21         else
22             c[k++] = b[j++];
23     }
24     while (i < m)
25         c[k++] = a[i++];
26     while (j < n)
27         c[k++] = b[j++];
28     for (i = 0; i < k; i++)
29     {
30         if (flag == 0)
31             printf("%d", c[i]);
32         else
33             printf(" %d", c[i]);
34         flag = 1;
35     }
36     printf("
");
37     return 0;
38 }
原文地址:https://www.cnblogs.com/yishilin/p/4347963.html