Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

दो क्रमबद्ध सरणी का माध्यिका


माध्यिकाएं मध्य संख्याएं हैं, दूसरे शब्दों में, माध्यिका मान एक क्रमबद्ध सूची में मध्य अवलोकन है। यह 50% के संचयी प्रतिशत के अनुरूप है।

दो सरणियों का आकार समान होना चाहिए, हम पहले दो अलग-अलग सरणियों का माध्यिका पाएंगे, फिर दो सूचियों की वास्तविक माध्यिका प्राप्त करने के लिए अलग-अलग माध्यिकाओं की तुलना करेंगे।

इनपुट और आउटपुट

Input:
Two sorted array are given.
Array 1: {1, 2, 3, 6, 7}
Array 2: {4, 6, 8, 10, 11}
Output:
The median from two array. Here the median value is 6.
Merge the given lists into one. {1, 2, 3, 4, 6, 6, 7, 8, 10, 11}
From the merged list find the average of two middle elements. here (6+6)/2 = 6.

एल्गोरिदम

माध्यिका(सूची, n)

इनपुट: डेटा की सूची, और डेटा की संख्या।

आउटपुट: दी गई सूची का माध्यिका।

Begin
   if the list has even number of data, then
      return (list[n/2] + list[n/2-1])/2
   else
      return list[n/2]
End

findMedian(list1, list2, n)

इनपुट - दो क्रमबद्ध सूचियाँ, और सूचियों की संख्या।

आउटपुट - दो क्रमबद्ध सूचियों में से माध्यिका।

Begin
   if n <= 0, then
      it is invalid, and return invalid number
   if n = 1, then
      return (list1[0] + list2[0])/2
   if n = 2, then
      return ((max of list1[0], list2[0]) + (min of list1[1], list2[1]))/2
   med1 := median(list1, n)
   med2 := median(list2, n)

   if med1 = med2, then
      return med1
   if med1 < med2, then
      if item has even number of data, then
         subList := data from list2, from 0 to n/2 – 1 data
         return findMedian(subList, list1, n – (n/2) + 1)
      subList := data from list2, from 0 to n/2 data
      return findMedian(subList, list2, n – (n/2))
End

उदाहरण

#include<iostream>
using namespace std;

int median(int list[], int n) {
   if (n%2 == 0)     //when array containts even number of data
      return (list[n/2] + list[n/2-1])/2;
   else        //for odd number of data
      return list[n/2];
}

intfindMedian(int list1[], int list2[], int n) {
   if (n <= 0)
      return -1;      //invalid length of lists
   if (n == 1)
      return (list1[0] + list2[0])/2;    //for single element simply get average from two array
   if (n == 2)
      return (max(list1[0], list2[0]) + min(list1[1], list2[1])) / 2;

   int med1 = median(list1, n);     //Find median from first array
   int med2 = median(list2, n);     //Find median from second array

   if (med1 == med2)    //when both medians are same, they are the final median
       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)    //when 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

  1. जावास्क्रिप्ट में किसी सरणी के माध्यिका की गणना करना

    जावास्क्रिप्ट में किसी सरणी के माध्यिका की गणना के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title&

  1. सी भाषा में सरणी के अलग-अलग तत्वों को प्रिंट करें

    पूर्णांक तत्वों की एक सरणी के साथ, कार्य डुप्लिकेट मानों को हटाना और अलग-अलग तत्वों को क्रमबद्ध तरीके से प्रिंट करना है। नीचे दी गई एक सरणी है जो फैशन 4, 6, 5, 3, 4, 5, 2, 8, 7 और 0 में पूर्णांक प्रकार के मानों को संग्रहीत करती है, परिणाम क्रमबद्ध तत्वों को 0, 2, 3, 4 के रूप में प्रिंट करेगा। 4, 5,

  1. पायथन में सॉर्ट किए गए ऐरे को मर्ज करें

    मान लीजिए कि हमारे पास दो क्रमबद्ध सरणी A और B हैं। हमें उन्हें मर्ज करना है और केवल एक क्रमबद्ध सरणी C बनाना है। सूचियों का आकार भिन्न हो सकता है। उदाहरण के लिए, मान लीजिए A =[1,2,4,7] और B =[1,3,4,5,6,8], तो मर्ज की गई सूची C होगी [1,1,2,3,4, 4,5,6,7,8] इसे हल करने के लिए, इन चरणों का पालन करें