माध्यिका मध्य संख्या होती है, दूसरे शब्दों में, माध्यिका मान एक क्रमबद्ध सूची में मध्य अवलोकन होता है। यह 50% के संचयी प्रतिशत से मेल खाता है।
दोनों सरणियों का आकार समान होना चाहिए। हम पहले प्रत्येक सरणी की अलग-अलग माध्यिका ज्ञात करेंगे, फिर उन अलग-अलग माध्यिकाओं की तुलना करके दोनों सूचियों की वास्तविक माध्यिका प्राप्त करेंगे।
इनपुट और आउटपुट
इनपुट: दो क्रमबद्ध सरणियाँ दी गई हैं। सरणी 1: {1, 2, 3, 6, 7} सरणी 2: {4, 6, 8, 10, 11} आउटपुट: दो सरणियों से माध्यिका। यहाँ माध्यिका मान 6 है। दी गई सूचियों को एक में मिलाएं। {1, 2, 3, 4, 6, 6, 7, 8, 10, 11} मिली हुई सूची से दो मध्य तत्वों का औसत निकालें। यहाँ (6+6)/2 = 6।
एल्गोरिदम
median(list, n)
इनपुट: डेटा की सूची, और डेटा की संख्या।
आउटपुट: दी गई सूची की माध्यिका।
शुरू यदि सूची में डेटा की संख्या सम है, तो वापस करें (list[n/2] + list[n/2-1])/2 अन्यथा वापस करें list[n/2] अंत
findMedian(list1, list2, n)
इनपुट: दो क्रमबद्ध सूचियाँ, और सूचियों की संख्या।
आउटपुट: दो क्रमबद्ध सूचियों से माध्यिका।
शुरू यदि n <= 0, तो यह अमान्य है, और अमान्य संख्या वापस करें यदि n = 1, तो वापस करें (list1[0] + list2[0])/2 यदि n = 2, तो वापस करें ((list1[0], list2[0] का अधिकतम) + (list1[1], list2[1] का न्यूनतम))/2 med1 := median(list1, n) med2 := median(list2, n) यदि med1 = med2, तो वापस करें med1 यदि med1 < med2, तो यदि डेटा की संख्या सम है, तो उपसूची := list2 से डेटा, 0 से n/2 - 1 तक वापस करें findMedian(उपसूची, list1, n - (n/2) + 1) उपसूची := list2 से डेटा, 0 से n/2 तक वापस करें findMedian(उपसूची, list2, n - (n/2)) अंत
उदाहरण
#include<iostream> using namespace std; int median(int list[], int n) { if (n%2 == 0) //जब सरणी में डेटा की संख्या सम हो return (list[n/2] + list[n/2-1])/2; else //डेटा की विषम संख्या के लिए return list[n/2]; } int findMedian(int list1[], int list2[], int n) { if (n <= 0) return -1; //सूचियों की अमान्य लंबाई if (n == 1) return (list1[0] + list2[0])/2; //एकल तत्व के लिए बस दो सरणियों से औसत लें if (n == 2) return (max(list1[0], list2[0]) + min(list1[1], list2[1])) / 2; int med1 = median(list1, n); //पहली सरणी से माध्यिका खोजें int med2 = median(list2, n); //दूसरी सरणी से माध्यिका खोजें if (med1 == med2) //जब दोनों माध्यिकाएँ समान हों, वे अंतिम माध्यिका हैं return med1; if (med1 < med2) { if (n % 2 == 0) return findMedian(list1 + n/2 - 1, list2, n - n/2 +1); return findMedian(list1 + n/2, list2, n - n/2); } if (n % 2 == 0) //जब med1 > med2 return findMedian(list2 + n/2 - 1, list1, n - n/2 + 1); return findMedian(list2 + n/2, list1, n - n/2); } int main() { int list1[] = {1, 2, 3, 6, 7}; int list2[] = {4, 6, 8, 10, 11}; int n1 = 5; int n2 = 5; if (n1 == n2) cout<< "Median is "<<findMedian(list1, list2, n1); else cout<< "Doesn't work for lists of unequal size"; }
आउटपुट
Median is 6