C语言求数组中位数
时间: 2023-08-28 11:03:19 浏览: 172
c语言中位数
5星 · 资源好评率100%
要求数组中位数,需要先将数组进行排序,然后再根据数组元素个数的奇偶性,选择不同的计算方式。
以下是使用C语言实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
double median(int arr[], int n) {
qsort(arr, n, sizeof(int), compare); // 先将数组排序
if (n % 2 == 0) { // 数组元素个数为偶数
return (double)(arr[n/2 - 1] + arr[n/2]) / 2.0;
} else { // 数组元素个数为奇数
return (double)arr[n/2];
}
}
int main() {
int arr[] = {3, 7, 1, 9, 2};
int n = sizeof(arr) / sizeof(arr[0]);
double m = median(arr, n);
printf("Median = %lf", m);
return 0;
}
```
输出结果为:
```
Median = 3.000000
```
在该示例代码中,`compare()` 函数用于比较两个元素的大小,`qsort()` 函数用于对数组进行排序,`median()` 函数用于计算中位数。其中,计算中位数时,首先将数组排序,然后根据数组元素个数的奇偶性,选择不同的计算方式。
阅读全文