हमें एक धनात्मक पूर्णांक प्रकार सरणी दी गई है, मान लीजिए, किसी भी आकार का arr[] ऐसा है कि किसी सरणी में तत्वों का मान 0 से अधिक होना चाहिए लेकिन किसी सरणी के आकार से कम होना चाहिए। कार्य इस तरह से सरणी को पुनर्व्यवस्थित करना है कि यदि arr[j] 'j' है तो arr[j] 'i' बन जाता है और अंतिम परिणाम प्रिंट करता है।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इनपुट - int arr[] ={3, 4, 1, 2, 0}
आउटपुट टी - व्यवस्था से पहले सरणी:3 4 1 2 0 एक सरणी की पुनर्व्यवस्था जैसे कि एआर [जे] बन जाता है अगर एआर [आई] जे है:4 2 3 0 1पी>
स्पष्टीकरण - हमें आकार 6 का एक पूर्णांक सरणी और 6 से कम मान वाले सभी तत्वों को दिया गया है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे अर्थात arr[1] 4 है, arr[4] =1; एआर [2] 1 है, एआर [1] =2; गिरफ्तारी [3] is2, गिरफ्तारी [2] =3; गिरफ्तारी [4] 0 है, गिरफ्तारी [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
स्पष्टीकरण - हमें आकार 6 का एक पूर्णांक सरणी और 6 से कम मान वाले सभी तत्वों को दिया जाता है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे अर्थात arr[0] is 2, arr[2] =0; एआर [1] 0 है, एआर [0] =1; एआर [2] is1, एआर [1] =2; arr[3] 3 है, arr[3] =3. इसलिए, अंतिम सरणी 1 2 0 3 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक प्रकार के तत्वों की एक सरणी इनपुट करें और एक सरणी के आकार की गणना करें।
-
व्यवस्था से पहले सरणी को प्रिंट करें और फ़ंक्शन को कॉल करें पुनर्व्यवस्था (गिरफ्तारी, आकार)
-
समारोह के अंदर पुनर्व्यवस्था (गिरफ्तारी, आकार)
-
पूर्णांक प्रकार मानों की एक सरणी बनाएं जैसे ptr[] सरणी arr[] के समान आकार का।
-
प्रारंभ लूप फॉर, i से 0 तक i से i आकार से कम। लूप के अंदर, ptr[arr[i]] को i पर सेट करें।
-
I से 0 तक के लिए लूप प्रारंभ करें जब तक कि i आकार से कम न हो। लूप के अंदर, 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(){ //input an array int arr[] = {3, 4, 1, 2, 0}; int size = sizeof(arr) / sizeof(arr[0]); //print the original Array cout<<"Array before Arrangement: "; for (int i = 0; i < size; i++){ cout << arr[i] << " "; } //calling the function to rearrange the array Rearrangement(arr, size); //print the array after rearranging the values 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