C 语言中位数程序

中位数是排序列表中心的值。要求中位数,我们需要按升序或降序对列表进行排序。

例如,以 3、5、2、7、3 的列表作为输入列表。要找出中位数,首先我们将其重新排序为 2、3、3、5、7。我们发现位置 3 处的 ((5+1)/2) 为 3。因此,此列表中的中位数为 3。

算法

此程序的算法非常简单 −

开始
步骤 1 → 取一个包含 n 个值的整数列表 A
步骤 2 →按某种顺序排列列表中的值,例如升序
步骤 3 → 计算列表的中间值 → (n + 1) / 2
步骤 4 → 将中间值显示为 中位数
停止

伪代码

我们可以根据算法得出伪代码,如下所示 −

procedure median()
   
   Array A
   Size  N
   SORT(A)
   middle = (N + 1) / 2
   DISPLAY A[middle] as median

end procedure

实现

该算法的实现如下 −

#include <stdio.h>

void swap(int *p,int *q) {
   int t;
   
   t=*p; 
   *p=*q; 
   *q=t;
}

void sort(int a[],int n) { 
   int i,j,temp;

   for(i = 0;i < n-1;i++) {
      for(j = 0;j < n-i-1;j++) {
         if(a[j] > a[j+1])
            swap(&a[j],&a[j+1]);
      }
   }
}

int main() {
   int a[] = {6,3,8,5,1};
   int n = 5;
   int sum,i;

   sort(a,n);
   
   n = (n+1) / 2 - 1;      // -1 as array indexing in C starts from 0

   printf("Median = %d ", a[n]);

   return 0;
}

输出

程序的输出应为 −

Median = 5 

mathematical_programs_in_c.html