หากองค์ประกอบของรายการถูกจัดเรียงตามลำดับ ค่ากลางที่แบ่งรายการออกเป็นสองส่วนโดยมีจำนวนรายการเท่ากันทั้งสองด้านจะเรียกว่าค่ามัธยฐาน
จำนวนรายการคี่มีค่ากลางเพียงค่าเดียวในขณะที่; จำนวนคู่มีค่ากลางสองค่า
ค่ามัธยฐานสำหรับจำนวนคู่จึงถูกกำหนดเป็นค่าเฉลี่ยของค่ากลางทั้งสองค่า
อัลกอริทึม
อ้างถึงอัลกอริทึมที่ระบุด้านล่างเพื่อคำนวณค่ามัธยฐาน
ขั้นตอนที่ 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\n"); scanf("%d", &n); /* Reading items into array a */ printf("Input %d values \n",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("\n\nMedian is %f\n", 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