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\n");

   scanf("%d", &n);

   /* Reading items into array a */

   printf("Input %d values \n",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("\n\nMedian is %f\n", 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 程序查找给定列表的中位数。 的全部内容, 来源链接: utcz.com/z/361344.html

回到顶部