हमें एक धनात्मक पूर्णांक प्रकार की सरणी दी गई है, मान लीजिए arr[] किसी भी दिए गए आकार की, जिसमें सरणी के तत्वों का मान 0 से अधिक लेकिन सरणी के आकार से कम होना चाहिए। कार्य सरणी को इस तरह पुनर्व्यवस्थित करना है कि यदि arr[j] 'j' है तो arr[j] 'i' बन जाए और अंतिम परिणाम प्रिंट करें।
विभिन्न इनपुट-आउटपुट परिदृश्य देखते हैं:
इनपुट: int arr[] = {3, 4, 1, 2, 0}
आउटपुट: व्यवस्था से पहले सरणी: 3 4 1 2 0 पुनर्व्यवस्थित सरणी जैसे कि arr[j] i बन जाए यदि arr[i] j है: 4 2 3 0 1
व्याख्या: हमें आकार 5 की एक पूर्णांक सरणी दी गई है और सरणी के सभी तत्वों का मान 5 से कम है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे: arr[1] 4 है, arr[4] = 1; arr[2] 1 है, arr[1] = 2; arr[3] 2 है, arr[2] = 3; arr[4] 0 है, arr[0] = 4। इसलिए, अंतिम सरणी 4 2 3 0 1 है।
इनपुट: int arr[] = {2, 0, 1, 3}
आउटपुट: व्यवस्था से पहले सरणी: 2 0 1 3 पुनर्व्यवस्थित सरणी जैसे कि arr[j] i बन जाए यदि arr[i] j है: 1 2 0 3
व्याख्या: हमें आकार 4 की एक पूर्णांक सरणी दी गई है और सरणी के सभी तत्वों का मान 4 से कम है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे: arr[0] 2 है, arr[2] = 0; arr[1] 0 है, arr[0] = 1; arr[2] 1 है, arr[1] = 2; arr[3] 3 है, arr[3] = 3। इसलिए, अंतिम सरणी 1 2 0 3 है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण:
- पूर्णांक प्रकार के तत्वों की एक सरणी इनपुट करें और सरणी का आकार गणना करें।
- व्यवस्था से पहले सरणी प्रिंट करें और फंक्शन Rearrangement(arr, size) को कॉल करें।
- फंक्शन Rearrangement(arr, size) के अंदर:
- सरणी arr[] के समान आकार की पूर्णांक प्रकार के मानों की एक सरणी ptr[] बनाएं।
- i को 0 से size से कम तक लूप चलाएं। अंदर, ptr[arr[i]] को i पर सेट करें।
- i को 0 से size से कम तक लूप चलाएं। अंदर, arr[i] को ptr[i] पर सेट करें।
- सरणी के मानों के पुनर्व्यवस्थित होने के बाद सरणी प्रिंट करें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size) {
int ptr[size];
for(int i = 0; i < size; i++) {
ptr[arr[i]] = i;
}
for(int i = 0; i < size; i++) {
arr[i] = ptr[i];
}
}
int main() {
// एक सरणी इनपुट करें
int arr[] = {3, 4, 1, 2, 0};
int size = sizeof(arr) / sizeof(arr[0]);
// मूल सरणी प्रिंट करें
cout << "Array before Arrangement: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
// सरणी को पुनर्व्यवस्थित करने के लिए फंक्शन कॉल करें
Rearrangement(arr, size);
// मानों को पुनर्व्यवस्थित करने के बाद सरणी प्रिंट करें
cout << "\nRearrangement of an array such that 'arr[j]' becomes 'i' if 'arr[i]' is 'j' is: ";
for(int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
Array before Arrangement: 3 4 1 2 0 Rearrangement of an array such that 'arr[j]' becomes 'i' if 'arr[i]' is 'j' is: 4 2 3 0 1