将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;
}