首頁  >  文章  >  後端開發  >  尋找給定清單的中位數的C程序

尋找給定清單的中位數的C程序

PHPz
PHPz轉載
2023-09-14 13:21:081037瀏覽

尋找給定清單的中位數的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刪除