1124: 两个有序数组合并

来源:互联网 发布:淘宝退换货退款流程 编辑:程序博客网 时间:2024/05/16 17:43

1124: 两个有序数组合并

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 6010  Solved: 2174

SubmitStatusWeb Board

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 73 6 4 2

Sample Output

7 6 5 4 2 2 1

HINT

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

Source


#include<stdio.h>  int a[1000000]={0},b[1000000];//防止堆栈溢出   int main(){     int n,m,i,j,k=0;      scanf("%d",&n);      for(i=n-1;i>=0;i--){          scanf("%d",&a[i]);  }      scanf("%d",&m);      for(j=0;j<m;j++){          scanf("%d",&b[j]);      }             //初始化 两个数组完毕      //算法思想  a数组按照逆序遍历             int c[n+m];      i=0,j=0;//初始化     while (i < n && j < m) {        if (a[i] >= b[j])          c[k++] = a[i++];        else          c[k++] = b[j++];      }      while (i < n)        c[k++] = a[i++];      while (j < m)        c[k++] = b[j++];                 for(k=0;k<m+n-1;k++)        printf("%d ",c[k]);         printf("%d",c[m+n-1]);      return 0;  } 


原创粉丝点击