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

ओ (एन) समय में सकारात्मक और नकारात्मक संख्याओं को पुनर्व्यवस्थित करें और सी ++ में ओ (1) अतिरिक्त स्थान

हमें एक पूर्णांक प्रकार की सरणी दी गई है जिसमें धनात्मक और ऋणात्मक दोनों संख्याएँ हैं, मान लीजिए, किसी भी आकार का arr[]। कार्य एक सरणी को इस तरह से पुनर्व्यवस्थित करना है कि सभी सकारात्मक और नकारात्मक संख्याएं वैकल्पिक स्थिति में हों और यदि अतिरिक्त सकारात्मक या नकारात्मक तत्व हैं तो उन्हें एक सरणी के अंत में रखा जाएगा।

आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -

इनपुट - int arr[] ={4, 2, -1, -1, 6, -3}

आउटपुट - O(n) समय और O(1) अतिरिक्त स्थान में धनात्मक और ऋणात्मक संख्याओं की पुनर्व्यवस्था है:2 - 1 6 -1 4 -3

स्पष्टीकरण - हमें आकार 6 का एक पूर्णांक सरणी दिया जाता है जिसमें सकारात्मक और नकारात्मक दोनों तत्व होते हैं। अब, हम सरणी को इस तरह से पुनर्व्यवस्थित करेंगे कि सभी सकारात्मक तत्व और नकारात्मक तत्व एक वैकल्पिक स्थिति में हों और सभी अतिरिक्त तत्व एक सरणी के अंत में जोड़े जाएंगे यानी 2 -1 6 -1 4 -3 होंगे अंतिम परिणाम

इनपुट - int arr[] ={-1, -2, -3, 1, 2, 3, 5, 5, -5, 3, 1, 1}

आउटपुट - O(n) समय और O(1) अतिरिक्त स्थान में धनात्मक और ऋणात्मक संख्याओं की पुनर्व्यवस्था है:2 - 2 3 -5 5 -3 5 -1 1 3 1 1

स्पष्टीकरण - हमें आकार 12 का एक पूर्णांक सरणी दिया जाता है जिसमें सकारात्मक और नकारात्मक दोनों तत्व होते हैं। अब, हम सरणी को इस तरह से पुनर्व्यवस्थित करेंगे कि सभी सकारात्मक तत्व और नकारात्मक तत्व एक वैकल्पिक स्थिति में हों और सभी अतिरिक्त तत्व एक सरणी के अंत में जोड़े जाएंगे यानी 2 -2 3 -5 5 -3 5 -1 1 3 1 1 अंतिम परिणाम होगा

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांक प्रकार के तत्वों की एक सरणी इनपुट करें और एक सरणी के आकार की गणना करें।

  • FOR लूप का उपयोग करके पुनर्व्यवस्था क्रिया करने से पहले एक सरणी प्रिंट करें।

  • एक पैरामीटर के रूप में सरणी और सरणी के आकार को पास करके फ़ंक्शन को पुनर्व्यवस्था (गिरफ्तारी, आकार) पर कॉल करें।

  • समारोह के अंदर पुनर्व्यवस्था (गिरफ्तारी, आकार)

    • अस्थायी पूर्णांक प्रकार चर घोषित करें अर्थात अस्थायी से -1, धनात्मक से अस्थायी + 1 और ऋणात्मक से 0.

    • किसी सरणी के आकार से कम होने तक i से 0 तक के लिए लूप प्रारंभ करें। लूप के अंदर, IF arr[i] 0 से कम की जाँच करें, फिर टेम्प को 1 से बढ़ाएँ और C++ STL की इनबिल्ट विधि को कॉल करें यानी स्वैप (arr[temp], arr[i]) और arr[temp] और arr[i को पास करें। ] एक पैरामीटर के रूप में।

    • एक सरणी के आकार से सकारात्मक कम और सकारात्मक से कम और एआर [नकारात्मक] 0 से कम होने पर लूप शुरू करें। लूप के अंदर, एआर [नकारात्मक] और एआर [पॉजिटिव] को पैरामीटर के रूप में पास करके स्वैप कॉल करें। धनात्मक को 1 से बढ़ाएँ और ऋणात्मक को ऋणात्मक + 2 पर सेट करें।

  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   int temp = -1;
   for(int i = 0; i < size; i++){
      if (arr[i] < 0){
         temp++;
         swap(arr[temp], arr[i]);
      }
   }
   int positive = temp + 1;
   int negative = 0;
   while(positive < size && negative < positive && arr[negative] < 0){
      swap(arr[negative], arr[positive]);
      positive++;
      negative = negative + 2;
   }
}
int main(){
   int arr[] = {4, 2, -1, -1, 6, -3};
   int size = sizeof(arr)/sizeof(arr[0]);
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"Rearrangement of positive and negative numbers in O(n) time and O(1) extra space is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Rearrangement of positive and negative numbers in O(n) time and O(1) extra space is: 2 -1 6 -1 4 -3

  1. सकारात्मक और नकारात्मक संख्याओं को पुनर्व्यवस्थित करने के लिए पायथन कार्यक्रम में लैम्ब्डा अभिव्यक्ति

    इस ट्यूटोरियल में, हम एक सूची में धनात्मक और ऋणात्मक संख्याओं को पुनर्व्यवस्थित करने के लिए लैम्ब्डा का उपयोग करके एक अनाम फ़ंक्शन लिखने जा रहे हैं। हमें एक नई सूची बनाने के लिए ऋणात्मक संख्याओं और फिर सकारात्मक संख्याओं को एक सूची से चुनने की आवश्यकता है। एल्गोरिदम आइए देखें कि समस्या को चरण दर चर

  1. पायथन प्रोग्राम में एक सूची में सकारात्मक और नकारात्मक संख्याओं की गणना करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें चलने योग्य सूची दी गई है, हमें इसमें सकारात्मक और नकारात्मक संख्याओं को गिनने और उन्हें प्रदर्शित करने की आवश्यकता है। दृष्टिकोण 1 - पुनरावृति निर्माण (के लिए) का उपयोग करते हुए पाशविक-बल दृष्टिकोण =0 की जांच क

  1. सकारात्मक और नकारात्मक संख्याओं को पुनर्व्यवस्थित करने के लिए पायथन में लैम्ब्डा अभिव्यक्ति

    इस लेख में, हम लैम्ब्डा एक्सप्रेशन का उपयोग करने के बारे में जानेंगे जो सकारात्मक और नकारात्मक पूर्णांकों की एक इनपुट सरणी लेगा। हम दो अलग-अलग सरणियों की गणना करते हैं जिनमें से एक में ऋणात्मक संख्याएँ होती हैं और दूसरी में धनात्मक संख्याएँ होती हैं। यहां हम एक पुनर्व्यवस्थित () फ़ंक्शन को परिभाषित