两个有序数组合并为一个有序数组

将两个有序数组合并为一个有序数组,重复元素保留一份。

#include <stdio.h>
#include <stdlib.h>
int arry2one(int *arr1, int arr1size, int *arr2, int arr2size)
{
        int arr1min = 0;
        int arr2min = 0;
        int arrallmin = 0;
        int *arrall = NULL;
        int k = 0;

        arrall = malloc(sizeof(int) * (arr1size+arr2size));
        if(!arrall)
        {
                return -1;
        }

        while(arrallmin < (arr1size + arr2size -1) && arr1min < arr1size && arr2min < arr2size)
        {
                if(arr1[arr1min] <= arr2[arr2min])
                {
                        arrall[arrallmin] = arr1[arr1min];
                        arr1min++;
                }
                else
                {
                        arrall[arrallmin] = arr2[arr2min];
                        arr2min++;
                }
                arrallmin++;
        }

        while(k < (arr1size + arr2size -1))
        {
                printf("%d\n", arrall[k]);
                k++;
        }
}


int main(int argc, char **argv)
{
        int a[5] = {1,3,5,7,9};
        int b[5] = {2,4,6,8,10};

        arry2one(a,5,b,5);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglin12315

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值