将2个已知有序的数组合并为一个新的有序数组

将2个已知有序的数组合并为一个新的有序数组。如下代码,已有两个数组 arr1 和 arr2,要求将两个数组中元素合并到数组 arr3 中,合并时要去除数组中的重复数据。


```c
#include <stdio.h>
 
int main(void)
{
    int arr1[] = {3,6,8,9,9,11,45}; 
    int arr2[] = {1,3,6,8,45,89};
    int arr3[100]; 
    int i, len;
 
    // 补全代码处
 
    for (i=0; i<len; ++i)
    {
        printf("%d ", arr3[i]);
    }
    printf("\n")
    // 预期输出结果:1 3 6 8 9 11 45 89
 
    return 0;
}


```

#include<stdio.h>
#include <stdio.h>
 
int main(void)
{
    int arr1[] = {3,6,8,9,9,11,45};
    int arr2[] = {1,3,6,8,45,89};
    int arr3[100];
    int i, len;
 
// 补全代码处
    int n=sizeof(arr1)/sizeof(int);
    int m=sizeof(arr2)/sizeof(int);
    int ap=0,bp=0,cp=0;
    for(int j=0; j<n+m; j++)
    {
        if(arr1[ap]==arr2[bp])
        {
            ap++;j++;
        }
        if(ap==n) {
            arr3[cp++]=arr2[bp++];
            continue;
        }
        if(bp==m) {
            arr3[cp++]=arr1[ap++];
            continue;
        }
        if(arr1[ap]<=arr2[bp]) arr3[cp++]=arr1[ap++];
        else arr3[cp++]=arr2[bp++];
    }
    len=cp;
    for (i=0; i<len; ++i)
 
    {
 
        printf("%d ", arr3[i]);
 
    }
 
    printf("\n");
 
// 预期输出结果:1 3 6 8 9 11 45 89
 
    return 0;

}