查詢給定列表中位數的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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP