zoukankan      html  css  js  c++  java
  • 【2010】合并两个有序数列

    Time Limit: 3 second
    Memory Limit: 2 MB

    用合并的方法把两个有序数列a,b合并为一个新的有序数列c;
    算法是:比较a和b,把两者小的数放到c中,一直继续此操作。

    Input

    第一行输入数列a的元素个数
    第二行依次输入a的元素
    第三行输入数列b的元素个数
    第四行依次输入b的元素

    Output

    输出合并后的数列c,每个元素用空格隔开,最后用回车结束

    Sample Input

    3
    7 17 19
    4
    8 24 34 40
    

    Sample Output

    7 8 17 19 24 34 40
    

    【题解】

    直接把两行数字输入进一个数组,然后用快排 或者是冒泡排下序就可以了。

    【代码】

    #include <cstdio>
    
    const int MAXN = 50000;
    
    int n,a[MAXN],x,y;
    
    void input_data()
    {
        int j = 0;
        scanf("%d",&x);
        for (int i = 1;i <= x;i++)
            {
                    j++;
                    scanf("%d",&a[j]);
            }
        scanf("%d",&y);
        for (int i = 1;i <= y;i++)
            {
                    j++;
                    scanf("%d",&a[j]);
            }
        n = x + y; //也可以写成 n = j。
    }
    
    void q_sort(int l,int r) //快排
    {
        int i = l, j = r, m = a[(i+j)/2];
        do
        {
            while (a[i] < m) i++;
            while (m < a[j]) j--;
            if (i <=j )
                {
                        int t = a[i];
                        a[i] = a[j];
                        a[j] = t;
                        i++;j--;
                }
        }
        while ( i <= j);
        if (l < j) q_sort(l,j);
        if (i < r) q_sort(i,r);
    }
    
    void output_ans()
    {
            for (int i = 1; i <= n-1;i++)
                printf("%d ",a[i]);
            printf("%d
    ",a[n]);
    }
    
    int main()
    {
        input_data();
        q_sort(1,n);
        output_ans();
        return 0;
    }
    


     

  • 相关阅读:
    windows 10 查看电池损耗情况
    pycharm 远程显示 matplotlib
    关联矩阵与邻接矩阵 2018-11-27
    Determinats(行列式) 2018-11-23
    Ablation study 2018-11-10
    ODBC,实现图片循环写入Oracle数据库
    c#与java之比较(转自Jack.Wang's home)
    java中移位操作
    如何自学java迅速成为java高手
    一点点学习思考
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632484.html
Copyright © 2011-2022 走看看