যদি লিস্টের এলিমেন্টগুলো ক্রমবদ্ধভাবে সাজানো থাকে, তবে মাঝপথের যে মানটি আইটেমগুলোকে সমান সংখ্যক আইটেম সহ দুটি অংশে ভাগ করে সেটিকে মেডián বলা হয়।
বিজোড় সংখ্যক আইটেমের শুধু একটি মাঝপথি মান থাকে; জোড় সংখ্যক আইটেমের দুটি মাঝপথি মান থাকে।
জোড় সংখ্যক আইটেমের মেডিয়ান তাই দুটি মাঝপথি মানের গড় হিসেবে নির্ধারিত হয়।
অ্যালগরিদম
মেডিয়ান ক্যালকুলেট করার অ্যালগরিদম নিচে দেওয়া হলো:
স্টেপ ১ - আইটেম কাউন্ট রেখে অ্যারেতে আইটেমগুলো পড়ুন।
স্টেপ ২ - আইটেমগুলো ক্রমবর্ধমান ক্রমে সাজান।
স্টেপ ৩ - মেডিয়ান কম্পিউট করুন।
মেডিয়ান বের করার আগে নম্বরগুলো সাজানোর লজিক নিম্নরূপ:
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