c语言如何进行数组找不同
时间: 2024-10-16 22:21:17 浏览: 1
在C语言中,找到两个数组的不同元素通常需要两步操作:首先对两个数组分别排序,然后遍历其中一个数组,检查另一个数组中是否存在相同的元素。如果不存在,则该元素就是不同的。
这里有一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 归并排序函数,用于对数组进行排序
void merge_sort(int arr[], int n) {
if (n <= 1)
return;
int mid = n / 2;
int left[mid], right[n - mid];
for (int i = 0; i < mid; i++)
left[i] = arr[i];
for (int j = mid; j < n; j++)
right[j - mid] = arr[j];
merge_sort(left, mid);
merge_sort(right, n - mid);
merge(arr, left, right, mid, n - mid);
}
// 合并函数
void merge(int arr[], int left[], int right[], int l, int r) {
int i = 0, j = 0, k = 0;
while (i < l && j < r) {
if (left[i] < right[j]) {
arr[k++] = left[i++];
} else {
arr[k++] = right[j++];
}
}
// 将剩余未比较的元素添加到结果数组
while (i < l)
arr[k++] = left[i++];
while (j < r)
arr[k++] = right[j++];
}
// 找不同元素
void find_diff(int arr1[], int n1, int arr2[], int n2) {
// 首先对两个数组排序
merge_sort(arr1, n1);
merge_sort(arr2, n2);
int i = 0, j = 0;
while (i < n1 && j < n2) {
if (arr1[i] != arr2[j])
printf("%d ", arr1[i++]);
else
j++; // 如果相等,跳过当前元素继续检查下一个
}
// 打印剩余的唯一元素
while (i < n1)
printf("%d ", arr1[i++]);
}
int main() {
int arr1[] = {1, 4, 6, 7, 9};
int arr2[] = {2, 3, 4, 5, 8};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
printf("Different elements between the two arrays are: ");
find_diff(arr1, n1, arr2, n2);
return 0;
}
```
这个示例程序会找出`arr1`和`arr2`中的不同元素,并打印出来。
阅读全文