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

सी ++ प्रोग्राम बाइनरी सर्च दृष्टिकोण का उपयोग करके अधिकतम सबएरे योग खोजने के लिए

बाइनरी सर्च (लॉग एन) की रन-टाइम जटिलता के साथ एक तेज़ खोज एल्गोरिदम है। यह सर्च एल्गोरिदम फूट डालो और जीतो के सिद्धांत पर काम करता है। इस एल्गोरिथम के ठीक से काम करने के लिए, डेटा संग्रह क्रमबद्ध रूप में होना चाहिए।

बाइनरी सर्च संग्रह के सबसे मध्य आइटम की तुलना करके किसी विशेष आइटम की तलाश करता है। यदि कोई मिलान होता है, तो आइटम की अनुक्रमणिका वापस कर दी जाती है। यदि मध्य आइटम आइटम से बड़ा है, तो आइटम को मध्य आइटम के बाईं ओर उप-सरणी में खोजा जाता है। अन्यथा, आइटम को मध्य आइटम के दाईं ओर उप-सरणी में खोजा जाता है। यह प्रक्रिया उप-सरणी पर भी तब तक जारी रहती है जब तक कि उप-सरणी का आकार शून्य न हो जाए।

यह बाइनरी सर्च दृष्टिकोण का उपयोग करके अधिकतम सबएरे योग खोजने का कार्यक्रम है।

एल्गोरिदम

Begin
   Declare an integer function maximum() to find the maximum of two integers.
   Declare val1, val2 to the integer datatype.
   Pass them as parameter.
   Check the maximum between val1 and val2.
   Return the maximum value.
End
Begin
   Declare an integer function MCS() to find the maximum sum sub-array which includes medium of the sub-array.
   Declare an array array[] and variable l, m, h to the integer datatype.
   Pass them as parameter.
   Declare variable s, sum_of_left_part to the integer datatype.
      Initialize s = 0.
      Initialize sum_of_left_part = -1.
   for (int i = m; i >= l; i--)
      s = s + array[i].
   if (s > sum_of_left_part) then
      sum_of_left_part = s.
      s = 0
   Declare variable sum_of_right_part to the integer datatype.
      Initialize sum_of_right_part = -1.
   for (int i = m+1; i <= h; i++)
      s = s + array[i].
   if (s > sum_of_right_part) then
      sum_of_right_part = s.
   return sum_of_left_part + sum_of_right_part.
End
Begin
   Declare an integer function MaximumSum_of_SubArray().
   Declare an array array[] and variable l, h to the integer datatype.
      Pass them as parameter.
   Declare m to the integer datatype.
   if (l == h) then
      return array[l].
   m = (l + h)/2;
   return maximum(maximum(MaximumSum_of_SubArray(array, l, m), MaximumSum_of_SubArray(array, m+1, h)), MCS(array, l, m, h)).
   Declare number_of_elements and i to the integer datatype.
   Print “Enter the number of elements of array: ”.
   Enter the value of number_of_elements.
   Declare an array a[number_of_elements] to the integer datatype.
   for(i = 0; i < n; i++)
      Print “Enter the element of”.
      Enter the data element of array.
   Print “Maximum sum of Sub-Array is: ” .
      Print the result of MaximumSum_of_SubArray(a, 0, n-1).
End.

उदाहरण

#include<iostream>
using namespace std;
int maximum(int val1, int val2) // find the maximum of two integers {
   return (val1 > val2)? val1:val2;
}
int MCS(int array[], int l, int m, int h) // find the maximum sum sub-array which includes medium of the sub-array. {
   int s = 0;
   int sum_of_left_part = -1;
   for (int i = m; i >= l; i--) {
      s = s + array[i];
      if (s > sum_of_left_part)
         sum_of_left_part = s;
   }
   s = 0;
   int sum_of_right_part = -1;
   for (int i = m+1; i <= h; i++) {
      s = s + array[i];
      if (s > sum_of_right_part)
         sum_of_right_part = s;
   }
   return sum_of_left_part + sum_of_right_part; // Return sum of elements on left and right of medium.
}
int MaximumSum_of_SubArray(int array[], int l, int h) {
   int m;
   if (l == h)
      return array[l];
   m = (l + h)/2;
   return maximum(maximum(MaximumSum_of_SubArray(array, l, m), MaximumSum_of_SubArray(array, m+1, h)), MCS(array, l, m, h));
}
int main() {
   int number_of_elements, i;
   cout<<"Enter the number of elements of array: ";
   cin>> number_of_elements;
   cout<<endl;
   int a[number_of_elements];
   for(i = 0; i < number_of_elements; i++) {
      cout<<"Enter the element of "<<i+1<<": ";
      cin>>a[i];
   }
   cout<<"\nMaximum sum of Sub-Array is: "<<MaximumSum_of_SubArray(a, 0, number_of_elements -1); // Print the maximum sum sub-array.
   return 0;
}

आउटपुट

Enter the number of elements of array: 5

Enter the element of 1: 12
Enter the element of 2: 45
Enter the element of 3: 56
Enter the element of 4: 48
Enter the element of 5: 75

Maximum sum of Sub-Array is: 236

  1. C++ में बाइनरी ट्री में अधिकतम लम्बवत योग ज्ञात कीजिए

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। कार्य ऊर्ध्वाधर क्रम ट्रैवर्सल में सभी नोड्स के अधिकतम योग को प्रिंट करना है। तो अगर पेड़ नीचे जैसा है - लंबवत क्रम ट्रैवर्सल इस प्रकार है - 4 2 1 + 5 + 6 = 12 3 + 8 = 11 7 9 यहां अधिकतम 12 है। दृष्टिकोण सरल है। हम वर्टिकल ऑर्डर ट्रैवर्सल करेंगे, फिर योग

  1. C++ प्रोग्राम बाइनरी सर्च दृष्टिकोण का उपयोग करके किसी सरणी के न्यूनतम तत्व को खोजने के लिए

    रैखिक खोज दृष्टिकोण का उपयोग करके सरणी के न्यूनतम तत्व को खोजने के लिए यह एक सी ++ प्रोग्राम है। इस कार्यक्रम की समय जटिलता O(log(n)) है। एल्गोरिदम Begin Construct binary search tree for the given unsorted data array. To find out the minimum element move the pointer to the leftmost child node.

  1. सी ++ प्रोग्राम बाइनरी सर्च का उपयोग करके एक ऐरे में अधिकतम तत्व खोजने के लिए

    बाइनरी सर्च ट्री का उपयोग करके किसी सरणी के अधिकतम तत्व को खोजने के लिए यह एक सी ++ प्रोग्राम है। इस कार्यक्रम की समय जटिलता O(log(n)) है। एल्गोरिदम Begin Construct the Binary Search Tree using the given data elements. Next traverse the root pointer to the rightmost child node available. Pr