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

सी ++ में एक सरणी में स्थानीय मिनीमा खोजें


मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हमें सरणी का स्थानीय न्यूनतम ज्ञात करना है। सरणी ए में, तत्व ए [एक्स] को स्थानीय मिनीमा कहा जाता है यदि यह अपने दोनों पड़ोसियों से कम या बराबर है। कोने के तत्वों के लिए केवल एक पड़ोसी पर विचार किया जाएगा। और यदि एक से अधिक स्थानीय मिनीमा उपलब्ध हैं, तो केवल एक ही लौटाएं। उदाहरण के लिए, यदि सरणी [9, 6, 3, 14, 5, 7, 4] जैसी है, तो स्थानीय मिनीमा 3, 5 और 4 हो सकती है, इसलिए यह एल्गोरिथम उनमें से केवल एक को लौटा सकता है।

इस समस्या को हल करने के लिए हम बाइनरी सर्च जैसे लॉजिक को फॉलो करेंगे। यदि मध्य तत्व अपने बाएँ और दाएँ तत्वों से छोटा है, तो मध्य वापस आएँ, अन्यथा, यदि यह बाएँ पड़ोसी से बड़ा है, तो बाईं ओर कुछ स्थानीय मिनीमा हो सकता है, यदि यह दाएँ तत्व से बड़ा है, तो वहाँ दाईं ओर कुछ स्थानीय मिनीमा होंगे, सटीक स्थानीय मिनीमा खोजने के लिए उनके लिए वही कार्य करें।

उदाहरण

#include<iostream>
using namespace std;
int localMinima(int arr[], int left, int right, int n) {
   int mid = left + (right - left)/2;
   if ((mid == 0 || arr[mid-1] > arr[mid]) && (mid == n-1 || arr[mid+1] > arr[mid]))
      return mid;
   else if (mid > 0 && arr[mid-1] < arr[mid])
      return localMinima(arr, left, (mid -1), n);
   return localMinima(arr, (mid + 1), right, n);
}
int findLocalMinima(int arr[], int n) {
   return localMinima(arr, 0, n-1, n);
}
int main() {
   int arr[] = {9, 6, 3, 14, 5, 7, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Local minima is: " << arr[findLocalMinima(arr, n)];
}

आउटपुट

Local minima is: 3

  1. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

    मान लीजिए कि एक सरणी A दिया गया है। हमें उस सरणी में प्रत्येक तत्व की संख्या को पार करना होगा। पार करने वाले अधिक से अधिक तत्व होते हैं जो वर्तमान तत्व की सरणी के दाईं ओर मौजूद होते हैं। मान लीजिए A ={2, 7, 5, 3, 0, 8, 1}, श्रेष्ठ हैं {4, 1, 1, 2, 0, 0}, तो 2 में दायीं ओर 4 संख्याएँ हैं, जो बड़ी हैं

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य

  1. सी ++ फ़ंक्शन से स्थानीय सरणी कैसे वापस करें?

    एक स्थानीय सरणी को सीधे C++ फ़ंक्शन से वापस नहीं किया जा सकता है क्योंकि यह फ़ंक्शन कॉल के बाद स्मृति में मौजूद नहीं हो सकता है। इसे हल करने का एक तरीका फ़ंक्शन में एक स्थिर सरणी का उपयोग करना है। चूंकि स्थैतिक सरणी का जीवनकाल संपूर्ण कार्यक्रम है, इसे उपरोक्त समस्या के बिना आसानी से C++ फ़ंक्शन से