Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ का उपयोग करके ऐरे को सबसे छोटा, सबसे बड़ा, दूसरा सबसे छोटा, दूसरा सबसे बड़ा क्रम में पुनर्व्यवस्थित करना

हमें एक ऐरे दिया गया है; हमें इस ऐरे को एक ऐसे क्रम में व्यवस्थित करना है कि पहला तत्व न्यूनतम तत्व होना चाहिए, दूसरा तत्व अधिकतम तत्व होना चाहिए, तीसरा तत्व दूसरा न्यूनतम तत्व होना चाहिए, चौथा तत्व दूसरा अधिकतम तत्व होना चाहिए, और इसी तरह। उदाहरण के लिए:

इनपुट: 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 आदि जैसी किसी अन्य भाषा में लिख सकते हैं। आशा है कि आपको यह लेख उपयोगी लगा।

  1. C++ में BST में k-वां सबसे छोटा तत्व खोजें (BST में ऑर्डर स्टैटिस्टिक्स) C++ में BST में k-वां सबसे छोटा तत्व खोजें (BST में ऑर्डर स्टैटिस्टिक्स)

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक मान K इनपुट के रूप में है, हमें ट्री में K-वां सबसे छोटा तत्व ढूंढना है।तो, यदि इनपुट इस तरह हैk = 3, तो आउटपुट 15 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक फ़ंक्शन find_kth_smallest() परिभाषित करें, यह रूट, काउंट, k लेगा,यदि रूट NULL है, त

  1. - लिनियर सर्च का उपयोग करके सरणी में न्यूनतम एलिमेंट खोजने के लिए C++ प्रोग्राम

    यह लिनियर सर्च दृष्टिकोण का उपयोग करके सरणी के न्यूनतम एलिमेंट को खोजने के लिए एक C++ प्रोग्राम है। इस प्रोग्राम की समय जटिलता O(n) है। एल्गोरिदम शुरुआत डेटा एलिमेंट को सरणी में निर्दिष्ट करें। 0 इंडेक्स पर मान को न्यूनतम वेरिएबल में निर्दिष्ट करें। न्यूनतम की तुलना अन्य डेटा एलिमेंट्स से क्रमिक रूप

  1. - C++ में सरणी का सबसे बड़ा एलिमेंट खोजने का प्रोग्राम

    एक सरणी में कई एलिमेंट्स होते हैं और सरणी में सबसे बड़ा एलिमेंट वह होता है जो अन्य एलिमेंट्स से बड़ा होता है। उदाहरण के लिए। 5 1 7 2 4 उपरोक्त सरणी में, 7 सबसे बड़ा एलिमेंट है और यह इंडेक्स 2 पर है। सरणी का सबसे बड़ा एलिमेंट खोजने का एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream>