C語言中位數程式

2019-10-16 22:09:05

中位值是排序列表中心的值。對於中位數,我們需要按升序或降序對列表進行排序。

例如以3,5,2,7,3這個數列作為輸入列表。要找出中位數,首先我們將它重新排序為2,3,3,5,7,找到位置3,即:((5 + 1)/ 2)3,所以這個列表中的中位值是3

程式碼實現

該演算法的實現程式如下 -

#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