求解随机小数数组中的众数C语言
时间: 2023-09-03 22:12:13 浏览: 124
众数问题的C语言
5星 · 资源好评率100%
众数是指在一组数据中出现次数最多的数值。对于随机小数数组,可以采用以下方法求解众数:
1. 对数组进行排序。
2. 遍历数组,统计每个数值出现的次数。
3. 找出出现次数最多的数值即为众数。
下面是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return (*(double*)a > *(double*)b) ? 1 : -1;
}
double mode(double arr[], int n) {
int max_count = 0;
double mode_value = arr[0];
int count = 1;
qsort(arr, n, sizeof(double), cmp);
for (int i = 1; i < n; i++) {
if (arr[i] == arr[i-1]) {
count++;
} else {
if (count > max_count) {
max_count = count;
mode_value = arr[i-1];
}
count = 1;
}
}
if (count > max_count) {
max_count = count;
mode_value = arr[n-1];
}
return mode_value;
}
int main() {
double arr[] = {1.2, 3.4, 2.1, 4.5, 3.4, 2.1, 2.1};
int n = sizeof(arr) / sizeof(arr[0]);
printf("The mode of the array is %lf\n", mode(arr, n));
return 0;
}
```
在这个示例中,我们使用了快速排序算法从小到大对数组进行排序。然后,我们遍历数组,统计每个数值出现的次数,并找出出现次数最多的数值。最后返回众数。
阅读全文