求数组的众数 且不一定有唯一的众数c语言
时间: 2024-10-24 10:02:30 浏览: 28
在C语言中,计算数组的众数(即出现次数最多的元素),如果没有唯一众数,可以采用哈希表(如数组或链表)辅助统计每个元素的出现次数。这里是一个简单的示例,假设我们不知道数组是否有多个众数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体存储元素和计数
typedef struct {
int element;
int count;
} ElementCount;
// 函数用于查找众数
int findMode(int arr[], int n) {
// 初始化哈希表(数组)
ElementCount counts[500] = {0}; // 假设最大元素范围是500
for (int i = 0; i < n; i++) {
counts[arr[i]].count++;
}
// 找出最大计数,初始化最大值和结果
int max_count = 0, mode = -1;
// 遍历哈希表,更新最大计数和模式
for (int i = 0; i < sizeof(counts) / sizeof(ElementCount); i++) {
if (counts[i].count > max_count) {
max_count = counts[i].count;
mode = i;
}
}
return mode;
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int mode = findMode(arr, n);
printf("众数是: %d\n", mode);
return 0;
}
```
这个程序首先遍历数组,然后更新每个元素的计数。最后,它找出计数最大的元素作为众数返回。如果存在多个众数,这个函数只会返回其中一个。
阅读全文