हमें संख्याओं की एक सरणी दी गई है, मान लीजिए Arr1[] और समान या अलग लंबाई की एक और सरणी Arr2[]। Arr1[] के तत्व आरोही क्रम में सॉर्ट किए गए हैं, जैसे कि एक तत्व असॉर्टेड है। हमें दूसरी सरणी Arr2[] से वह तत्व ढूंढना होगा जो Arr1[] के गलत स्थान वाले तत्व को प्रतिस्थापित कर सके और इसे सॉर्ट कर सके। साथ ही, Arr2[] से चुना गया तत्व अधिकतम होना चाहिए यदि कई विकल्प उपलब्ध हों।
इनपुट
Arr1[]= { 1,3,5,7,2,11 }, Arr2[]= { 4,8,7,10,9 } आउटपुट
Arr1 को सॉर्ट करने वाला अधिकतम तत्व: 10
व्याख्या: Arr2[] में वे संख्याएं जो Arr1[] को सॉर्ट कर सकती हैं: 8,9,10 क्योंकि वे सभी >=7 और <=11 हैं। इनमें से 10 अधिकतम है।
नया Arr1[] बन जाता है { 1,3,5,7,10,11 } और सॉर्टेड है।
इनपुट
Arr1[]= { 12,5,22,17 }, Arr2[]= { 4,8,7,10,9 } आउटपुट
ऐसा कोई तत्व नहीं।
व्याख्या: Arr2[] में कोई संख्या नहीं है जो >=12 और <=22 हो।
Arr1[] को सॉर्ट नहीं किया जा सकता।
प्रयुक्त दृष्टिकोण
- सरणी arr1[] और arr2[] संख्याओं को संग्रहीत करने के लिए उपयोग की जाती हैं। Arr1[] एक तत्व को छोड़कर आरोही क्रम में सॉर्टेड है।
- फ़ंक्शन sortMax(int arr1[], int arr2[], int n1, int n2) दोनों सरणियों और उनकी लंबाई को लेता है और arr1[] को अपडेट करता है यदि arr2[] में ऐसा तत्व मिलता है जो अधिकतम है और arr[] के गलत तत्व को भी प्रतिस्थापित कर सकता है और इसे सॉर्ट कर सकता है।
- arr1[] में गलत स्थान वाले तत्व का इंडेक्स wpos में संग्रहीत करें, प्रारंभ में -1।
- maxx का उपयोग arr2[] के उन तत्वों में से अधिकतम संग्रहीत करने के लिए किया जाता है जो arr1[] के गलत स्थान वाले तत्व को प्रतिस्थापित कर सकते हैं और इसे सॉर्ट कर सकते हैं।
- सबसे पहले arr1[] को पार करें और गलत तत्व ढूंढें जैसे। यदि arr[i]
- अब arr2[] को पार करें और ऐसे तत्व ढूंढें जिन्हें arr1[wpos-1] और arr[wpos+1] के बीच रखा जा सके। साथ ही यदि ऐसा तत्व मौजूद है तो इसकी तुलना maxx से करें।
- अधिकतम अपडेट करें।
- अंत में arr1[wpos] को maxx से प्रतिस्थापित करें।
- यदि ऐसा तत्व मिलता है तो maxx लौटाएं, अन्यथा -1 लौटाएं।
- यदि कोई तत्व नहीं मिलता है तो एक संदेश प्रदर्शित करें।
- अन्यथा सॉर्टेड arr1[] प्रिंट करें।
उदाहरण कोड
// सरणी को सॉर्ट करने के लिए C++ प्रोग्राम #include <bits/stdc++.h> using namespace std; int sortMax(int arr1[], int arr2[], int n1, int n2) //arr1 को सॉर्ट करना{ int wpos=-1; int maxx=-1; int i,j; for(i=0;i=arr1[wpos-1] && arr2[j]<=arr1[wpos+1]) if(arr2[j]>=maxx) maxx=arr2[j]; } if(maxx!=-1) arr1[wpos]=maxx; return maxx; } int main(){ int arr1[] = { 1, 3, 7, 4, 10 }; int arr2[] = { 2, 1, 6, 8, 9 }; int len1 = sizeof(arr1) / sizeof(arr1[0]); int len2 = sizeof(arr2) / sizeof(arr2[0]); int res=sortMax(arr1, arr2, len1, len2); if(res==-1) cout<<"कोई स्वैप संभव नहीं! ऐसा कोई तत्व नहीं!"; else{ cout<<"arr2[] में arr1[] को सॉर्ट करने के लिए अधिकतम: "<<res; cout<<endl<<"Arr1[]:"; for(int i=0;i आउटपुट
arr2[] में arr1[] को सॉर्ट करने के लिए अधिकतम: 9 Arr1[]:1 3 7 9 10 Arr2[]:2 1 6 8 9