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

C++ में सरणी में स्थानीय न्यूनतम ज्ञात करें


मान लीजिए हमारे पास n तत्वों की एक सरणी A है। हमें सरणी का स्थानीय न्यूनतम ढूंढना है। सरणी A में, तत्व A[x] को स्थानीय न्यूनतम कहा जाता है यदि यह अपने दोनों पड़ोसियों से कम या बराबर है। कोने के तत्वों के लिए केवल एक पड़ोसी माना जाएगा। और यदि एक से अधिक स्थानीय न्यूनतम उपलब्ध हैं, तो केवल एक वापस करें। उदाहरण के लिए, यदि सरणी [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. - C++ में सरणी के प्रत्येक तत्व का सरपासर काउंट खोजें

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

  1. - C++ में दिए गए सरणी के एलिमेंट्स के फैक्टोरियल का GCD खोजें

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

  1. - C++ फंक्शन से लोकल सरणी कैसे लौटाएं?

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