যদি তালিকার উপাদানগুলিকে ক্রমানুসারে সাজানো হয়, তাহলে, মধ্যম মান যা আইটেমগুলিকে দুই ভাগে ভাগ করে দুই পাশে সমান সংখ্যক আইটেমকে মধ্যমা বলে।
বিজোড় সংখ্যার আইটেমগুলির শুধুমাত্র একটি মধ্যম মান আছে; জোড় সংখ্যার আইটেমের দুটি মধ্যম মান আছে।
আইটেমের জোড় সংখ্যার মধ্যক তাই, দুটি মধ্যম মানের গড় হিসাবে মনোনীত করা হয়।
অ্যালগরিদম
মধ্যম গণনা করতে নীচে দেওয়া একটি অ্যালগরিদম পড়ুন।
ধাপ 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