查找给定列表中位数的C程序。
如果列表中的元素按顺序排列,则将项目分成两部分,两侧项目数量相等的中值称为中位数。
奇数个项目只有一个中间值;偶数个项目有两个中间值。
因此,偶数个项目的中间值被指定为两个中间值的平均值。
算法
参考以下算法来计算中位数。
步骤 1 - 将项目读入数组,同时计算项目数量。
步骤 2 - 将项目按升序排序。
步骤 3 - 计算中位数。
在查找中位数之前用于排序数字的逻辑如下:
for (i = 1 ; i <= n-1 ; i++){ for (j = 1 ; j <= n-i ; j++){ if (a[j] <= a[j+1]){ t = a[j]; a[j] = a[j+1]; a[j+1] = t; } else continue ; } }
查找列表中位数的逻辑如下:
if ( n % 2 == 0) median = (a[n/2] + a[n/2+1])/2.0 ; else median = a[n/2 + 1];
示例
以下是计算给定数字中位数的 C 程序:
#include<stdio.h> #define N 10 main( ){ int i,j,n; float median,a[N],t; printf("Enter the number of items
"); scanf("%d", &n); /* Reading items into array a */ printf("Input %d values
",n); for (i = 1; i <= n ; i++) scanf("%f", &a[i]); /* Sorting begins */ for (i = 1 ; i <= n-1 ; i++){ /* Trip-i begins */ for (j = 1 ; j <= n-i ; j++) { if (a[j] <= a[j+1]) { /* Interchanging values */ t = a[j]; a[j] = a[j+1]; a[j+1] = t; } else continue ; } } /* sorting ends */ /* calculation of median */ if ( n % 2 == 0) median = (a[n/2] + a[n/2+1])/2.0 ; else median = a[n/2 + 1]; /* Printing */ for (i = 1 ; i <= n ; i++) printf("%f ", a[i]); printf("
Median is %f
", median); }
输出
执行上述程序时,会产生以下输出:
Enter the number of items 5 Input 5 values 2.3 1.2 3.8 4.6 8.9 8.900000 4.600000 3.800000 2.300000 1.200000 Median is 3.800000
广告