
如果列表中的元素按顺序排列,则将列表中的元素分成两部分且两边元素数量相等的中间值称为中位数。
元素个数为奇数只有一个中间值;而;偶数个项目有两个中间值。
因此,偶数个项目的中位数被指定为两个中间值的平均值。
算法
请参考下面给出的算法来计算中位数。
步骤 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#define N 10main( ){ 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 items5Input 5 values2.31.23.84.68.98.900000 4.600000 3.800000 2.300000 1.200000Median is 3.800000
以上就是寻找给定列表的中位数的C程序的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445139.html
微信扫一扫
支付宝扫一扫