c语言找数组中重复最多的元素
时间: 2024-12-27 13:31:09 浏览: 8
在 C 语言中,找到数组中最常重复的元素可以采用哈希表(如 `unordered_map` 或者自定义结构)结合遍历的方式来实现。这里简单提供一种基于哈希表的解决方案:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100 // 假设数组大小
typedef struct {
int count;
int value;
} Item;
Item find_most_frequent(int arr[], int n) {
Item hash[SIZE] = {0}; // 初始化哈希表
int max_count = 0; // 最大计数
int most_frequent = -1; // 最频繁的值
for (int i = 0; i < n; i++) {
if (hash[arr[i]] == 0) {
hash[arr[i]].count = 1;
} else {
hash[arr[i]].count++;
}
if (hash[arr[i]].count > max_count) {
max_count = hash[arr[i]].count;
most_frequent = arr[i];
}
}
return (most_frequent != -1) ? hash[most_frequent] : (-1); // 返回最频繁的元素及其计数
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5, 6, 6, 6};
int n = sizeof(arr) / sizeof(arr[0]);
Item result = find_most_frequent(arr, n);
if (result.count > 0) {
printf("Most frequent element is %d with %d occurrences.\n", result.value, result.count);
} else {
printf("No repeated elements found.\n");
}
return 0;
}
```
在这个示例中,我们首先创建一个哈希表 `hash` 来存储每个元素及其出现次数。然后遍历数组,更新哈希表。最后,遍历哈希表找到出现次数最多的元素。
阅读全文