给我一个50个数据的数组取众数的C语言函数
时间: 2024-12-16 16:26:13 浏览: 10
c语言分治法求众数重数-五大常见算法策略之——递归与分治策略,算法数据结构
5星 · 资源好评率100%
在C语言中,计算一个整数数组的众数可以是一个稍微复杂的过程,因为数组排序和查找频繁项需要额外的步骤。这里提供一个简单的例子,该函数使用哈希表(实际上可以用一个大小为数组长度+1的计数数组来代替)来辅助找出最常见的元素:
```c
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 50
// 函数声明
int findMode(int arr[], int n);
void printArray(int arr[], int size) {
for (int i = 0; i < size; ++i)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int data[] = {/* 50个随机生成的数据 */};
int size = sizeof(data) / sizeof(data[0]);
int mode = findMode(data, size);
if (mode != -1)
printf("众数是: %d\n", mode);
else
printf("没有找到众数或者有多个众数。\n");
return 0;
}
// 计算众数的函数
int findMode(int arr[], int n) {
int count[ARRAY_SIZE + 1] = {0}; // 初始化计数数组
int max_count = 0, mode_index = -1;
// 遍历数组,更新计数
for (int i = 0; i < n; ++i)
count[arr[i]]++;
// 找到最大计数并追踪其索引
for (int i = 0; i <= ARRAY_SIZE; ++i) {
if (count[i] > max_count) {
max_count = count[i];
mode_index = i;
}
}
// 返回模式值,如果存在唯一的众数则返回,否则返回-1
return (max_count == 1) ? -1 : mode_index;
}
```
这个函数会统计每个元素出现的次数,并在最后返回出现次数最多的元素作为众数。如果有多个元素出现次数相同且最多,它将返回第一个遇到的那个。
阅读全文