将两个有序数组合并

将两个有序非严格递增数组,合并成一个数组,输出。

例如:int num1[] = {2, 5, 7, 7, 11};    int num2[] = {3, 5, 8};

输出:nums3[] = {2, 3, 5, 5, 7, 7, 8, 11};

函数:void mergeNum(int * array1,int size1,int * array2,int size2,int * array3,int size3)

1.将数组1中的第一个元素和数组2中第一个元素相比,将较小的输入给第三个数组;

2.再用较小元素数组中第二个元素,与较大元素相比,再将较小元素输入给第三个数组;

3.当某一个数组输入完,再将另一个数组中剩下的数组依次输入第三个数组;

#include <stdio.h>
#include <string.h>

void mergeNum(int * array1,int size1,int * array2,int size2,int * array3,int size3)
{
    int i = 0;
    int j = 0;
    int cnt = 0;
    while(i < size1  && j < size2 )
    {
        if(array1[i] <= array2[j])
        {
            array3[cnt] = array1[i];
            cnt++;
            i++;
        }
        else
        {
            array3[cnt] = array2[j];
            cnt++;
            j++;
        } 
    }
    while (i < size1)
    {
        array3[cnt] = array1[i];
        cnt++;
        i++;
    }
    while (j < size2)
    {
        array3[cnt] = array1[j];
        cnt++;
        j++;
    }
}
int main()
{
    int num1[] = {2, 5, 7, 7, 11};
    int num2[] = {3, 5, 8};

    int num3[8];
    int size1 = sizeof(num1);
    mergeNum(num1,sizeof(num1)/sizeof(num1[0]),num2,sizeof(num2)/sizeof(num2[0]),num3,sizeof(num3)/sizeof(num3[0]));
    //printf("size1 = %d\n",size1);

    for(int i = 0;i < 8;i++)
    {
        printf("num3[%d] = %d\n",i,num3[i]);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值