इस C++ प्रोग्राम में, हम बाइनरी सर्च दृष्टिकोण का उपयोग करके सरणी में एक पीक एलिमेंट ढूंढते हैं। यह एल्गोरिदम पहले मिले पीक को परिणाम के रूप में लौटाता है और इसकी समय जटिलता O(log n) है।
एल्गोरिदम
शुरुआत PeakElement() फ़ंक्शन में 'arr' डेटा की सरणी, प्रारंभ और अंत इंडेक्स आर्गुमेंट सूची में होते हैं। सरणी के उपभाग का मध्य निर्दिष्ट करें। यदि मध्य सीमा इंडेक्स पर है और मध्य का मान उसके पड़ोसी से अधिक है तो मध्य को पीक के रूप में लौटाएं। यदि मध्य का मान उसके दोनों पड़ोसियों से अधिक है तो मध्य को पीक के रूप में लौटाएं। यदि मध्य के दाईं ओर का मान मध्य से अधिक है तो सरणी के दूसरे उपभाग को PeakElement() में आर्गुमेंट के रूप में भेजें। यदि मध्य के बाईं ओर का मान मध्य से अधिक है तो सरणी के पहले उपभाग को PeakElement() में आर्गुमेंट के रूप में भेजें। अंत
उदाहरण कोड
#include<iostream> using namespace std; int PeakElement(int a[], int start, int end) { int i, mid; mid = (end+start+1)/2; if((a[mid] > a[mid+1] && mid == start)||(a[mid] > a[mid-1] && mid == end)) { return a[mid]; } else if(a[mid] < a[mid-1] && a[mid] > a[mid+1]) { return a[mid]; } else if(a[mid] <= a[mid+1]) { return PeakElement(a, mid+1, end); } else if(a[mid] <= a[mid-1]) { return PeakElement(a, start,mid-1); } } int main() { int n, i, p; cout<<"\nडेटा एलिमेंट की संख्या दर्ज करें: "; cin>>n; int arr[n]; for(i = 0; i < n; i++) { cout<<"एलिमेंट "<<i+1<<": "; cin>>arr[i]; } p = PeakElement(arr, 0, n-1); cout<<"\nदी गई सरणी का पीक एलिमेंट है: "<<p; return 0; } आउटपुट
डेटा एलिमेंट की संख्या दर्ज करें: 5 एलिमेंट 1 दर्ज करें: 45 एलिमेंट 2 दर्ज करें: 26 एलिमेंट 3 दर्ज करें: 70 एलिमेंट 4 दर्ज करें: 60 एलिमेंट 5 दर्ज करें: 15 दी गई सरणी का पीक एलिमेंट है: 70