如何用C语言编程找出一个整数数组中的重复元素?
时间: 2024-10-28 20:10:46 浏览: 84
在C语言中,找出一个整数数组中的重复元素可以采用多种方法,这里我们介绍一种基于哈希表(散列表)的简单算法:
1. 首先创建一个空的哈希表(这里可以用`size_t`类型的数组表示,因为`int`类型的最大值对应于`size_t`类型的较小值)。
2. 然后遍历输入数组。对于每个元素,检查哈希表中是否存在该元素对应的索引。如果存在,说明找到重复元素;如果不存在,将该元素的索引添加到哈希表中。
3. 如果遍历完数组仍未发现重复元素,则说明数组中没有重复元素。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 10
// 假设数组长度不超过 SIZE_MAX / sizeof(int)
size_t find_duplicates(int arr[], int n) {
size_t hash[ARRAY_SIZE] = {0}; // 初始化所有位置为0
for (size_t i = 0; i < n; i++) {
if (hash[arr[i]]) {
printf("Duplicate element found at index %zu and %zu\n", hash[arr[i]], i);
} else {
hash[arr[i]] = i; // 将当前元素的索引存入哈希表
}
}
}
int main() {
int test_array[] = {1, 2, 3, 4, 5, 2, 6, 7, 8, 9, 5};
int n = sizeof(test_array) / sizeof(test_array[0]);
find_duplicates(test_array, n);
return 0;
}
```
在这个例子中,如果输入数组中有重复元素,程序会打印出它们第一次出现的位置。如果没有重复元素,函数不会有任何输出。
阅读全文