हमें एक सरणी दी गई है; हमें इस सरणी को इस क्रम में व्यवस्थित करने की आवश्यकता है कि पहला तत्व न्यूनतम तत्व होना चाहिए, दूसरा तत्व अधिकतम तत्व होना चाहिए, तीसरा तत्व दूसरा न्यूनतम तत्व होना चाहिए, चौथा तत्व दूसरा अधिकतम तत्व होना चाहिए और इसी तरह के लिए उदाहरण -
Input : arr[ ] = { 13, 34, 30, 56, 78, 3 } Output : { 3, 78, 13, 56, 34, 30 } Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max } Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 } Output : { 2, 15, 4, 13, 6, 11, 8 }
समाधान खोजने के लिए दृष्टिकोण
इस समस्या को दो चरों, 'x . का उपयोग करके हल किया जा सकता है और 'y ' जहां वे अधिकतम और न्यूनतम तत्व को इंगित करेंगे, लेकिन उस सरणी के लिए क्रमबद्ध किया जाना चाहिए, इसलिए हमें पहले सरणी को सॉर्ट करने की आवश्यकता है, फिर पुन:व्यवस्थित सरणी को संग्रहीत करने के लिए उसी आकार की एक नई खाली सरणी बनाएं। अब सरणी पर पुनरावृति करें और यदि पुनरावृत्त तत्व सम सूचकांक पर है, तो arr[x] तत्व को खाली सरणी में जोड़ें और x को 1 से बढ़ाएँ। यदि तत्व एक विषम सूचकांक पर है, तो arr[ y ] तत्व जोड़ें। खाली सरणी और y को 1 से घटाएं। ऐसा तब तक करें जब तक कि y x से छोटा न हो जाए।
उदाहरण
#include <bits/stdc++.h> using namespace std; int main () { int arr[] = { 2, 4, 6, 8, 11, 13, 15 }; int n = sizeof (arr) / sizeof (arr[0]); // creating a new array to store the rearranged array. int reordered_array[n]; // sorting the original array sort(arr, arr + n); // pointing variables to minimum and maximum element index. int x = 0, y = n - 1; int i = 0; // iterating over the array until max is less than or equals to max. while (x <= y) { // if i is even then store max index element if (i % 2 == 0) { reordered_array[i] = arr[x]; x++; } // store min index element else { reordered_array[i] = arr[y]; y--; } i++; } // printing the reordered array. for (int i = 0; i < n; i++) cout << reordered_array[i] << " "; // or we can update the original array // for (int i = 0; i < n; i++) // arr[i] = reordered_array[i]; return 0; }
आउटपुट
2 15 4 13 6 11 8
उपरोक्त कोड की व्याख्या
- चर को x=0 और y =array_length(n) - 1 के रूप में प्रारंभ किया जाता है ।
- जबकि (x<=y) सरणी को तब तक पार करें जब तक कि x, y से बड़ा न हो जाए।
- यदि गिनती सम (x) है, तो तत्व को अंतिम सरणी में जोड़ दिया जाता है, और चर x को 1 से बढ़ा दिया जाता है।
- यदि i विषम है, तो (y)तत्व को अंतिम सरणी में जोड़ा जाता है, और चर y को 1 से घटाया जाता है।
- आखिरकार, पुनर्क्रमित सरणी को reordered_array[ ] में संग्रहीत किया जाता है।
निष्कर्ष
इस लेख में, हमने दिए गए सरणी को सबसे छोटे, सबसे बड़े रूप में पुनर्व्यवस्थित करने के समाधान पर चर्चा की। हम उसी के लिए एक C++ प्रोग्राम भी लिखते हैं। इसी तरह, हम इस प्रोग्राम को किसी अन्य भाषा जैसे C, Java, Python, आदि में भी लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।