首页 > 后端开发 > C++ > 正文

寻找给定列表的中位数的C程序

PHPz
发布: 2023-09-14 13:21:08
转载
1042 人浏览过

寻找给定列表的中位数的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</p><p>");
   scanf("%d", &n);
   /* Reading items into array a */
   printf("Input %d values </p><p>",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("</p><p></p><p>Median is %f</p><p>", 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
登录后复制

以上是寻找给定列表的中位数的C程序的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板