हमें एक ऐरे दिया गया है; हमें इस ऐरे को एक ऐसे क्रम में व्यवस्थित करना है कि पहला तत्व न्यूनतम तत्व होना चाहिए, दूसरा तत्व अधिकतम तत्व होना चाहिए, तीसरा तत्व दूसरा न्यूनतम तत्व होना चाहिए, चौथा तत्व दूसरा अधिकतम तत्व होना चाहिए, और इसी तरह। उदाहरण के लिए:
इनपुट: arr[] = {13, 34, 30, 56, 78, 3}
आउटपुट: {3, 78, 13, 56, 34, 30}
व्याख्या: ऐरे को क्रम में पुनर्व्यवस्थित किया गया {पहला न्यूनतम, पहला अधिकतम, दूसरा न्यूनतम, दूसरा अधिकतम, तीसरा न्यूनतम, तीसरा अधिकतम}
इनपुट: arr[] = {2, 4, 6, 8, 11, 13, 15}
आउटपुट: {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]);
// पुनर्व्यवस्थित ऐरे को स्टोर करने के लिए नया ऐरे बनाना
int reordered_array[n];
// मूल ऐरे को सॉर्ट करना
sort(arr, arr + n);
// वेरिएबल्स को न्यूनतम और अधिकतम तत्व इंडेक्स पर इंगित करना
int x = 0, y = n - 1;
int i = 0;
// ऐरे पर पुनरावृति करना जब तक मैक्स, मिन से कम या बराबर है
while (x <= y) {
// यदि i सम है तो मैक्स इंडेक्स तत्व स्टोर करें
if (i % 2 == 0) {
reordered_array[i] = arr[x];
x++;
}
// मिन इंडेक्स तत्व स्टोर करें
else {
reordered_array[i] = arr[y];
y--;
}
i++;
}
// पुनर्व्यवस्थित ऐरे प्रिंट करना
for (int i = 0; i < n; i++)
cout << reordered_array[i] << " ";
// या हम मूल ऐरे को अपडेट कर सकते हैं
// for (int i = 0; i < n; i++)
// arr[i] = reordered_array[i];
return 0;
}
आउटपुट
2 15 4 13 6 11 8
उपरोक्त कोड की व्याख्या
- वेरिएबल्स को x=0 और y = ऐरे_लंबाई(n) - 1 के रूप में इनिशियलाइज़ किया जाता है।
- while(x <= y) ऐरे को तब तक पार करें जब तक x, y से बड़ा न हो जाए।
- यदि काउंट सम है (x), तो तत्व को अंतिम ऐरे में जोड़ा जाता है, और वेरिएबल x को 1 से बढ़ाया जाता है।
- यदि i विषम है, तो (y) तत्व को अंतिम ऐरे में जोड़ा जाता है, और वेरिएबल y को 1 से घटाया जाता है।
- अंत में, पुनर्व्यवस्थित ऐरे reordered_array[] में स्टोर होता है।
निष्कर्ष
इस लेख में, हम दिए गए ऐरे को सबसे छोटा, सबसे बड़ा रूप में पुनर्व्यवस्थित करने के समाधान पर चर्चा करते हैं। हम इसके लिए C++ प्रोग्राम भी लिखते हैं। इसी तरह, हम इस प्रोग्राम को C, Java, Python आदि जैसी किसी अन्य भाषा में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा।