查詢給定列表中位數的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
");    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 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

更新於:2021年3月25日

17K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.