इस समस्या में, हमें n तत्वों का एक सरणी arr[] दिया जाता है। हमारा काम है ऐरे के अधिकतम तत्वों को मूल क्रम में खोजना।
हमें सरणी के अधिकतम k तत्वों को खोजने और फिर प्रिंट करने की आवश्यकता है क्योंकि उन्हें मूल रूप से अनुक्रमित किया गया था।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: एआर [] ={5, 1, 3, 6, 2}, के =2पी>
आउटपुट: 5, 6
स्पष्टीकरण:
सरणी के सबसे बड़े दो तत्व 6 और 5 हैं। लेकिन मूल सरणी में 6 से पहले 5 आता है इसलिए हमने उस तरह से मुद्रित किया है।
समाधान दृष्टिकोण
समस्या को हल करने के लिए, और k तत्वों को मूल क्रम में प्रिंट करें।
इसके लिए हम एक decArray बनाएंगे जो arr[] के तत्वों को अवरोही क्रम में संग्रहीत करेगा। फिर हम मूल सरणी को पार करेंगे और decArray[] का उपयोग करके k सबसे बड़े तत्व को प्रिंट करेंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool seachVal(int decArr[], int k, int ele){
for(int i = 0; i < k; i++){
if( decArr[i] == ele)
return true;
}
return false;
}
void printKMaxEle(int arr[], int k, int n) {
int decArr[n];
for(int i = 0; i < n ; i++){
decArr[i] = arr[i];
}
sort(decArr, decArr + n, greater<int>());
for (int i = 0; i < n; ++i)
if ( seachVal(decArr, k, arr[i]) )
cout<<arr[i]<<" ";
}
int main() {
int arr[] = { 15, 1, 3, 6, 2, 34, 8, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
int k = 3;
cout<<k<<" maximum elements of the array in their original order are \n";
printKMaxEle(arr, k, n);
return 0;
} आउटपुट
3 maximum elements of the array in their original order are 15 34 9