Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C หาค่ามัธยฐาน (Median) ของชุดข้อมูล

นิยาม Median

ค่ากลางของข้อมูลที่เรียงแล้ว จำนวนคี่: ค่ากลางตรง จำนวนคู่: ค่าเฉลี่ยของ 2 ค่ากลาง

อัลกอริทึม

  1. อ่าน n และค่าลงอาร์เรย์ a[1..n]
  2. เรียงข้อมูลจากมากไปน้อย (Bubble Sort)
  3. ถ้า 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) หากเรียงน้อยไปมาก ตำแหน่งจะต่างออกไป