इस समस्या में, हमें एक arr [] दिया जाता है जिसमें N अवर्गीकृत तत्व होते हैं। हमारा काम है किसी सरणी में सबसे बड़े तीन तत्वों को ढूंढना ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : arr[] = {7, 3, 9, 12, 1} Output : 12, 9, 7
समाधान दृष्टिकोण
हमें मूल रूप से सरणी के तीन सबसे बड़े तत्वों को खोजने और उन्हें प्रिंट करने की आवश्यकता है। यह कई तरीकों से किया जा सकता है,
विधि 1
सबसे बड़े तीन तत्वों के लिए, हम उनके मान रखने वाले तीन तत्व बनाएंगे, अधिकतम, अधिकतम2 और अधिकतम3 और इन मानों को गिरफ्तारी [0] पर सेट करें।
फिर हम i -> 1 से n-1 और प्रत्येक तत्व के लिए लूप बनाएंगे
if (arr[i]> max) -> max3 =max2, max2 =max , max =arr[i]।
और अगर (arr[i]> max2) -> max3 =max2, max2 =arr[i]।
और अगर (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<<"Three largest elements of the array are "<<max<<", "<<max2<<", "<<max3; } int main(){ int arr[] = {15, 2, 7, 86, 0, 21, 50}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The array is : "; for(int i = 0; i < n; i++) cout<<arr[i]<<"\t"; findThreeLargestElements(arr, n); return 0; }
आउटपुट
The array is : 15 2 7 86 0 21 50 Three largest elements of the array are 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<<"\nThree largest elements are "; 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<<"The array is : "; for(int i = 0; i < n; i++) cout<<arr[i]<<"\t"; findThreeLargestElements(arr, n); return 0; }
आउटपुट
The array is : 15 2 7 86 0 21 50 53 50 Three largest elements are 86 53 50