zoukankan      html  css  js  c++  java
  • SDUT 3329 顺序表应用5:有序顺序表归并

     

     

    顺序表应用5:有序顺序表归并

    Time Limit: 100 ms Memory Limit: 880 KiB

    Problem Description

    已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。

    Input

     输入分为三行:
    第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;
    第二行输入m个有序的整数,即为表A的每一个元素;
    第三行输入n个有序的整数,即为表B的每一个元素;

    Output

     输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。

    Sample Input

    5 3
    1 3 5 6 9
    2 4 10

    Sample Output

    1 2 3 4 5 6 9 10

    提示:这道题主要考察顺序表本质和数组相似的原理,所以我们可以通过建立两个数组,使得两个数组的元素进行比较,从而有序地输出合并后的表的元素。

    代码实现如下(gcc):
    #include<stdio.h>
    #include<stdlib.h>
    int a[10010];
    int b[10010];
    int i,j,k;
    int main()
    {
        int m,n;
        scanf("%d %d",&m,&n);
        for(i=0;i<m;i++)
            scanf("%d",&a[i]);
        for(i=0;i<n;i++)
            scanf("%d",&b[i]);
        k=0;
        for(i=0,j=0;i<m&&j<n;)
        {
            if(a[i]<b[j])
            {
                if(k==0)
                    printf("%d",a[i]);
                else
                    printf(" %d",a[i]);
                i++;
            }
            else
            {
                if(k==0)
                    printf("%d",b[j]);
                else
                    printf(" %d",b[j]);
                j++;
            }
            k++;
        }
        for(k=i;k<m;k++)
            printf(" %d",a[k]);
        for(k=j;k<n;k++)
            printf(" %d",b[k]);
        return 0;
    }
    
    
    /***************************************************
    Result: Accepted
    Take time: 8ms
    Take Memory: 224KB
    ****************************************************/
  • 相关阅读:
    SIGGRAPH
    用JSP实现的商城购物车模块
    大数运算
    编写高质量代码改善java程序的151个建议——导航开篇
    Spring3.0 AOP 具体解释
    HDU3400+三分
    Java实现BFS广度优先查找
    Java实现BFS广度优先查找
    Java实现BFS广度优先查找
    Java实现BFS广度优先查找
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9487154.html
Copyright © 2011-2022 走看看