इस समस्या में, हमें N असॉर्टेड तत्वों से युक्त एक arr[] दिया गया है। हमारा कार्य सरणी में सबसे बड़े तीन तत्व ज्ञात करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट : arr[] = {7, 3, 9, 12, 1} आउटपुट : 12, 9, 7 समाधान दृष्टिकोण
हमें मूल रूप से सरणी के तीन सबसे बड़े तत्व ढूंढने और उन्हें प्रिंट करने की आवश्यकता है। यह कई तरीकों से किया जा सकता है,
विधि 1
सबसे बड़े तीन तत्वों के लिए, हम उनके मानों को धारण करने वाले तीन तत्व बनाएंगे, max, max2 and max3 और इन मानों को arr[0] पर सेट करेंगे।
फिर हम i -> 1 से n-1 तक लूप करेंगे और प्रत्येक तत्व के लिए
if (arr[i] > max) -> max3 = max2, max2 = max , max = arr[i].
else if (arr[i] > max2) -> max3 = max2, max2 = arr[i].
else if (arr[i] > max3) -> max3 = arr[i].
लूप के अंत में, हम तीनों मान प्रिंट करेंगे।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <iostream> using namespace std; void findThreeLargestElements(int arr[], int arr_size){ int max, max2, max3; max3 = max = max2 = arr[0]; for(int i = 0; i < arr_size; i++){ if (arr[i] > max){ max3 = max2; max2 = max; max = arr[i]; } else if (arr[i] > max2){ max3 = max2; max2 = arr[i]; } else if (arr[i] > max3) max3 = arr[i]; } cout<<endl<<"सरणी के तीन सबसे बड़े तत्व हैं "<<max<<", "<<max2<<", "<<max3; } int main(){ int arr[] = {15, 2, 7, 86, 0, 21, 50}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"सरणी है : "; for(int i = 0; i < n; i++) cout<<arr[i]<<"\t"; findThreeLargestElements(arr, n); return 0; } आउटपुट
सरणी है : 15 2 7 86 0 21 50 तीन सबसे बड़े तत्व हैं 86, 50, 21
विधि 2
समस्या को हल करने की एक और विधि सरणी को सॉर्ट करना और फिर सरणी के पहले तीन तत्वों को प्रिंट करना है जो तीन सबसे बड़े तत्व हैं।
एल्गोरिदम
चरण 1 − एक सॉर्टिंग तकनीक का उपयोग करके सरणी को सॉर्ट करें।
चरण 2 − पहले तीन तत्व प्रिंट करें : arr[0] , arr[1] , arr[2]
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <bits/stdc++.h> using namespace std; void findThreeLargestElements(int arr[], int n){ sort(arr, arr + n, std::greater<>()); int j = 0; cout<<"\nतीन सबसे बड़े तत्व हैं "; for(int i = 0; i < n; i++){ if(arr[i] != arr[i+1]){ cout<<arr[i]<<" "; j++; } if(j == 3){ break; } } } int main(){ int arr[] = {15, 2, 7, 86, 0, 21, 50, 53, 50}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"सरणी है : "; for(int i = 0; i < n; i++) cout<<arr[i]<<"\t"; findThreeLargestElements(arr, n); return 0; } आउटपुट
सरणी है : 15 2 7 86 0 21 50 53 50 तीन सबसे बड़े तत्व हैं 86 53 50