阅读量:0
要求一个数组的中位数,可以按照以下步骤进行:
- 首先,对数组进行排序。可以使用C语言中的排序函数
qsort
来实现。
#include <stdio.h> #include <stdlib.h> // 比较函数,用于排序 int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int arr[] = {3, 1, 5, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); // 对数组进行排序 qsort(arr, len, sizeof(int), compare); // 打印排序后的数组 printf("Sorted array: "); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
- 排序后,如果数组长度为奇数,则中位数为排序后数组的中间值;如果数组长度为偶数,则中位数为排序后数组的中间两个数的平均值。
#include <stdio.h> #include <stdlib.h> int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int arr[] = {3, 1, 5, 2, 4}; int len = sizeof(arr) / sizeof(arr[0]); // 对数组进行排序 qsort(arr, len, sizeof(int), compare); // 打印排序后的数组 printf("Sorted array: "); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); // 求中位数 int median; if (len % 2 == 0) { median = (arr[len/2 - 1] + arr[len/2]) / 2; } else { median = arr[len/2]; } printf("Median: %d\n", median); return 0; }
以上代码先对数组进行排序,然后根据数组长度的奇偶性来求出中位数。