c语言求n个数组中位数
时间: 2025-06-14 15:17:05 浏览: 16
在C语言中计算一组数组的中位数,首先需要对数组进行排序,然后根据数组的大小(n)来确定如何找到中间值。如果数组的元素个数是奇数,那么中位数就是排序后的第(n+1)/2个元素;如果是偶数个,中位数则是中间两个元素的平均值。
下面是一个简单的步骤:
1. **排序数组**:使用快速排序、冒泡排序或其他排序算法将数组按照升序排列。
2. **检查数组长度**:
- 如果 n 为奇数,直接访问中间位置的元素。
- 如果 n 为偶数,取中间两个元素(下标为 n/2 和 n/2 - 1),并将它们相加除以 2 得到中位数。
以下是示例代码片段,这里我们使用了选择排序作为简化版的排序方法,因为其适用于较小规模的数组:
```c
#include <stdio.h>
#include <stdlib.h>
// 使用冒泡法简单排序
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
double find_median(int arr[], int n) {
// 先排序数组
bubble_sort(arr, n);
// 计算并返回中位数
if (n % 2 == 0)
return (arr[n / 2 - 1] + arr[n / 2]) / 2.0;
else
return arr[n / 2];
}
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
double median = find_median(arr, n);
printf("Median of the array is: %.2f\n", median);
return 0;
}
```
阅读全文
相关推荐


















