c++两个有序的数组合并成一个有序的数组

#include <iostream>
using namespace std;

#define  M 5
#define  N 3

int main(void)
{

    int a[M]={1,3,5,7,9};
    int b[N]={2,4,6};

    int c[M+N];

    int ai=0,bj=0,ck=0;  //三个标识位,分别记录三个数组的下标

    while(ai<M&&bj<N)    //a数组和b数组都没有到达末尾时
    {
        if(a[ai]<b[bj])
            c[ck++]=a[ai++];
        else
            c[ck++]=b[bj++];
    }

    if(ai==M)    //若a数组已经到达末尾,直接把b数组剩余元素拷贝到c数组即可
    {
        while(bj<N)
            c[ck++]=b[bj++];
    }

    if(bj==N)  //若b数组已经到达末尾,直接把数组剩余元素拷贝到c数组即可
    {
        while(ai<M)
            c[ck++]=a[ai++];
    }

    for(auto &i:c)  //遍历c数组
        cout<<i<<endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_29824717/article/details/81093183