将2个已知有序的数组合并为一个新的有序数组。如下代码,已有两个数组 arr1 和 arr2,要求将两个数组中元素合并到数组 arr3 中,合并时要去除数组中的重复数据。在下面代码中的补全代码处,补全下面代码实现相应功能。在补全处可以定义新的变量来完成合并功能。
#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;
}
https://blog.csdn.net/weixin_44882124/article/details/123328753
你可以利用c++中的set容器,将两个数组的值都压进这个set容器,然后set容器会自动去重和排序,非常方便,具体使用你可以去搜一下。如有帮助,请点击采纳,谢谢