用c语言求两个数组的并集
时间: 2024-09-13 12:04:32 浏览: 42
在C语言中,求两个数组的并集可以采用一种简单的遍历方法。首先,我们需要定义两个指针分别指向这两个数组的起始位置,并检查它们所指向的元素是否相等。如果发现相同的元素,则添加到结果数组中,并移动该指针;如果不同,则直接将第一个数组的元素添加到结果数组。然后继续比较两个数组中的下一个元素,直到遍历完其中一个数组为止。
以下是一个简单的示例,假设我们有两个整数数组`arr1`和`arr2`:
```c
#include <stdio.h>
void merge_arrays(int arr1[], int arr2[], int n1, int n2, int result[]) {
int i = 0, j = 0, k = 0;
// 遍历两个数组
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j]) {
result[k++] = arr1[i++];
} else if (arr1[i] > arr2[j]) {
result[k++] = arr2[j++];
} else { // 相同元素,仅添加一次
i++;
j++;
}
}
// 将剩余未添加的数组元素复制到结果数组
while (i < n1) {
result[k++] = arr1[i++];
}
while (j < n2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[] = {1, 2, 3, 4};
int arr2[] = {3, 4, 5, 6};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
int result[n1 + n2]; // 结果数组足够大
merge_arrays(arr1, arr2, n1, n2, result);
printf("合并后的数组: ");
for (int i = 0; i < n1 + n2; i++) {
printf("%d ", result[i]);
}
return 0;
}
```
运行这个程序,会得到两个数组的合并结果。注意这只是一个基本版本,实际应用中可能需要处理更复杂的情况,比如数组长度不确定、动态内存分配等。
阅读全文