自学内容网 自学内容网

2808: 【算法思想】【双指针】合并两个升序数组

题目描述

已知数组a中有n个按升序序排列的元素,数组b中有m个升序排列的元素,编程将a与b中的所有元素按升序存入数组c中

输入

输入有两行,第一行首先是一个正整数n,然后是n个整数;第二行首先是一个正整数m,然后是m个整数,m, n均小于等于1000000

输出

输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。

样例输入

4 1 2 5 7
3 2 4 6

样例输出

1 2 2 4 5 6 7

Code:

#include<bits/stdc++.h>
using namespace std;
int a[1000005],b[1000005],c[2000010];
int n,m,k=1;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>b[i];
    }
    int s=1,t=1;
    while(s<=n&&t<=m){
        if(a[s]<=b[t]){
            c[k++]=a[s++];
        }else{
            c[k++]=b[t++];
        }
    }
    while(s<=n){
        c[k++]=a[s++];
    }
    while(t<=m){
        c[k++]=b[t++];
    }
    for(int i=1;i<=m+n;i++){
        cout<<c[i]<<" ";
    }
    return 0;
}
/**************************************************************
    Problem: 2808
    User: yangrenrui
    Language: C++
    Result: 正确
    Time:1061 ms
    Memory:17804 kb
****************************************************************/


原文地址:https://blog.csdn.net/yangrenrui/article/details/137834907

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!