นิยาม Median
ค่ากลางของข้อมูลที่เรียงแล้ว จำนวนคี่: ค่ากลางตรง จำนวนคู่: ค่าเฉลี่ยของ 2 ค่ากลาง
อัลกอริทึม
- อ่าน n และค่าลงอาร์เรย์ a[1..n]
- เรียงข้อมูลจากมากไปน้อย (Bubble Sort)
- ถ้า n คู่: median = (a[n/2] + a[n/2+1]) / 2.0
ถ้า n คี่: 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\n");
scanf("%d", &n);
printf("Input %d values \n", n);
for (i = 1; i <= n; i++)
scanf("%f", &a[i]);
// Sorting descending
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;
}
}
}
// Median
if (n % 2 == 0)
median = (a[n/2] + a[n/2+1]) / 2.0;
else
median = a[n/2 + 1];
// Print sorted
for (i = 1; i <= n; i++)
printf("%f ", a[i]);
printf("\n\nMedian is %f\n", median);
}
ตัวอย่าง Output
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
หมายเหตุ: เรียงจากมากไปน้อย ดังนั้นตำแหน่งกลางคือ n/2 (1-based) หากเรียงน้อยไปมาก ตำแหน่งจะต่างออกไป