两个有序数列的合并
题目描述
已知数组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("\n"); 37 return 0; 38 }
用自己的努力创造我们的未来