用c++实现2个数组的交集 和并集的函数,交集和并集按照从小到大的顺序输出。
时间: 2023-09-13 21:14:06 浏览: 89
以下是C语言实现两个数组的交集和并集的示例代码:
```c
#include <stdio.h>
void intersection(int arr1[], int n1, int arr2[], int n2) {
int i = 0, j = 0;
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j]) {
i++;
} else if (arr1[i] > arr2[j]) {
j++;
} else {
printf("%d ", arr1[i++]);
j++;
}
}
printf("\n");
}
void unionSet(int arr1[], int n1, int arr2[], int n2) {
int i = 0, j = 0;
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j]) {
printf("%d ", arr1[i++]);
} else if (arr1[i] > arr2[j]) {
printf("%d ", arr2[j++]);
} else {
printf("%d ", arr1[i++]);
j++;
}
}
while (i < n1) {
printf("%d ", arr1[i++]);
}
while (j < n2) {
printf("%d ", arr2[j++]);
}
printf("\n");
}
int main() {
int arr1[] = {1, 3, 5, 7, 9};
int arr2[] = {2, 3, 4, 5, 6};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
printf("Intersection: ");
intersection(arr1, n1, arr2, n2);
printf("Union: ");
unionSet(arr1, n1, arr2, n2);
return 0;
}
```
输出结果为:
```
Intersection: 3 5
Union: 1 2 3 4 5 6 7 9
```
首先,我们定义了两个函数`intersection`和`unionSet`,分别用于求两个数组的交集和并集。参数分别为两个数组及其长度。
对于求交集的函数`intersection`,我们使用了两个指针`i`和`j`分别指向两个数组的开头。当两个指针所指的值相等时,输出该值并将两个指针都向后移动一位。如果`arr1[i]`比`arr2[j]`小,则将指针`i`向后移动一位;否则,将指针`j`向后移动一位。这样反复比较直到其中一个数组遍历完毕,输出结果即为两个数组的交集。
对于求并集的函数`unionSet`,我们同样使用了两个指针`i`和`j`分别指向两个数组的开头。当`arr1[i]`比`arr2[j]`小时,输出`arr1[i]`并将指针`i`向后移动一位;否则,输出`arr2[j]`并将指针`j`向后移动一位。当其中一个数组遍历完毕时,将另一个数组的剩余部分依次输出。最后输出的结果即为两个数组的并集。
阅读全文