zoukankan      html  css  js  c++  java
  • [codevs3296]有序数组合并

    题目描述 Description

    合并两个有序数组A和B,使得结果依然有序。

    进阶:合并两个有序数组A和B,假设A有n个数,B有m个数,A数组后面还有m个空余空间,需要将结果保存在A中。

    请使用O(n)的算法完成

    输入描述 Input Description

    第一行输入两个整数n和m

    第二行输入n个用空格隔开的整数表示数组A

    第三行输入m个用空格隔开的整数表示数组B

    输入保证A和B数组非递减

    输出描述 Output Description

    输出一行一共n+m个空格隔开的整数,即合并后的结果

    样例输入 Sample Input

    2 3 

    1  2

    1 1 5

    样例输出 Sample Output

    1 1 1 2 5

    数据范围及提示 Data Size & Hint

    1<=n,m<=1000000

    思路

    用三个指针分别指向正在处理的两个数组和结果数组,最后需要看一看是不是全部比较完了,时间复杂度O(n);

    var n,m,i,j,k,x:longint;
        a,b,c:array[1..10000000] of int64;
    begin
        readln(n,m);
        for i:=1 to n do read(a[i]);
        for i:=1 to m do read(b[i]);
        i:=1;//a的指针
        j:=1;//b的指针
        k:=1;//末尾的指针
        while (i<>n+1)and(j<>m+1) do
            begin
                if a[i]<=b[j] then
                    begin
                        c[k]:=a[i];
                        inc(i);
                        inc(k);
                    end
                else
                    begin
                        c[k]:=b[j];
                        inc(j);
                        inc(k);
                    end;
            end;
       // inc(k);
        for x:=i to n do
            begin
                c[k]:=a[x];
                inc(k);
             end;
        for x:=j to m do
            begin
                c[k]:=b[x];
                inc(k);
            end;
        for i:=1 to (n+m) do write(c[i],' ');
    end.
    View Code
  • 相关阅读:
    centOS 6 服务管理与服务脚本
    centOS 6启动流程
    shell脚本之流程控制
    centOS7网络配置(nmcli,bonding,网络组)
    模拟主机跨路由通信实验
    网络配置之基本网络配置(cenos6)
    网络基础之IP地址与子网划分
    网络基础之网络层
    我的BO之数据保护
    我的BO之强类型
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4741637.html
Copyright © 2011-2022 走看看