合并有序数组

作者在 2011-03-22 17:35:57 发布以下内容
合并有序数组 时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

给你两个有序且升序的数组,请你把它们合成一个升序数组并输出

输入:

第一行为N,N<=20 ;
第二行为N个数字,这N个数字用一个空格隔开
第三行为M,M<=20 ;
第四行为M个数字,这M个数字用一个空格隔开
所有数均可用int型表示

输出:

输出合并后的数组,每行输出一个,最后输出一个回车

输入样例:

3
1 3 7
5
2 4 6 8 10

输出样例:

1
2
3
4
6
7
8
10

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n,m,k,l;
    int a[25]={0};
    int b[25]={0};
    int c[50]={0};
    int i=0;int j=0;
    int *p,*q;
    p=a;q=b;
    scanf("%d",&n);
    while(i<n)
    {
        scanf("%d",&a[i]);
        i++;
    }
     i=0;
    scanf("%d",&m);
    while(i<m)
    {
        scanf("%d",&b[i]);
        i++;
    }
    i=0;l=0;
    while(l<n&&j<m)
    {
        if(*p<*q)
        {
           c[i]=*p;
           p++;
           l++;

        }
        else
        {
           c[i]=*q;
           q++;
           j++;
        }
        i++;
    }
    if(l==n)
    {
        k=m-j;
        while(k!=0)
        {
           c[i]=*q;
           q++;
           k--;
           i++;
        }
    }
    else
    {
         k=n-l;
        while(k!=0)
        {
           c[i]=*p;
           p++;
           k--;
           i++;
        }
    }
    for(i=0;i<m+n;i++)
    {
        printf("%d\n",c[i]);
    }
    return 0;
}
默认分类 | 阅读 802 次
文章评论,共0条
游客请输入验证码
浏览69260次