एक सरणी में 0s और 1s अलग करें


कठिनाई स्तर आसान
में अक्सर पूछा एकोलाइट वीरांगना फैब MakeMyTrip पेपैल Paytm Zoho
ऐरे

समस्या का विवरण

मान लीजिए कि आपने ए पूर्णांक सरणी। समस्या "सरणी में 0s और 1s को अलग करती है", सरणी को दो भागों में, 0s और 1s में अलग करने के लिए कहता है। 0 एरे के बाईं ओर और 1 एरे के दाईं ओर होना चाहिए।

उदाहरण

arr[]={1,0,1,1,0,1,1,0}
0 0 0 1 1 1 1 1
स्पष्टीकरण: सभी 0 को बाईं ओर और 1 को दाईं ओर स्थानांतरित कर दिया गया है।

कलन विधि

1. Traverse the array and get the count of total zero’s in the array.
2. Push ‘0’ that

सरणी में संख्या की गणना करें

.
3. Push ‘1’ (n – count) no of times in the array from the next position of 0 where we left inserting 0.
4. Print the array.

एक सरणी में अलग 0s और 1s के लिए स्पष्टीकरण

देखते हुए सरणी पूर्णांकों में, पूर्णांकों में, यह केवल सरणी में 0s और 1s को संग्रहीत करेगा। सरणी को इस तरह से व्यवस्थित करें कि सभी शून्य सरणी के बाईं ओर स्थानांतरित हो जाएंगे और सरणी के सभी 1s तत्वों को सरणी के दाईं ओर स्थानांतरित कर दिया जाएगा। इसके लिए हम सभी जीरो की गिनती करने जा रहे हैं। यह शून्य गणना सरणी के बाईं ओर शून्य को चिह्नित करने में हमारी मदद करेगी।

सरणी में सभी शून्य की गिनती प्राप्त करने के लिए कोड में पहली बार सरणी को पीछे छोड़ें, यह संख्या हमें सरणी के बाईं ओर से स्थानों की सभी संख्याओं को चिह्नित करने में मदद करेगी। तो इसके लिए हम एरे को आगे बढ़ाएंगे और गिरफ्तारी के प्रत्येक मूल्य की जांच करेंगे [i], क्या यह 0 के बराबर है, यदि यह 0 के बराबर पाया जाता है, तो 1. से गिनती का मान बढ़ाएं। हमें घोषित करना चाहिए था और लूप में प्रवेश करने से पहले गणना के मान को 0 पर आरंभीकृत किया। ट्रेस करने के बाद हमें गिनती मिली।

हम लूप की संख्या को बिना किसी समय के पार करेंगे, और 0 से गिरफ्तारी [i] के हर मूल्य को चिह्नित करेंगेth स्थानों की गिनती -1 संख्या के लिए सूचकांक। अब, हमारे पास सरणी के बाईं ओर शून्य है। अब हमें काउंट से n तक उस जगह पर जाना होगा जहां n एरे की लंबाई है। इसलिए i से शुरू करना = गणना का जो भी मूल्य हो, सभी मानों को अपडेट करते रहें। ।

एक सरणी में 0s और 1s अलग करें

कार्यान्वयन

C ++ प्रोग्राम के लिए सेग्रेट 0s और 1s एक ऐरे में

#include<iostream>

using namespace std;

void segregateZeroesOnes(int arr[], int n)
{
    int count = 0;

    for (int i = 0; i < n; i++)
    {
        if (arr[i] == 0)
            count++;
    }
    for (int i = 0; i < count; i++)
        arr[i] = 0;

    for (int i = count; i < n; i++)
        arr[i] = 1;
}

void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = {1,0,1,1,0,1,1,0};
    int n = sizeof(arr) / sizeof(arr[0]);

    segregateZeroesOnes(arr, n);
    printArray(arr, n);

    return 0;
}
0 0 0 1 1 1 1 1

एक सरणी में अलग 0s और 1s के लिए जावा कार्यक्रम

class segregateZeroesOnes
{
    public static void segregateZeroesOnes(int arr[], int n)
    {
        int count = 0;

        for (int i = 0; i < n; i++)
        {
            if (arr[i] == 0)
                count++;
        }
        for (int i = 0; i < count; i++)
            arr[i] = 0;

        for (int i = count; i < n; i++)
            arr[i] = 1;
    }
    
    public static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
    
    public static void main(String[] args)
    {
        int arr[] = new int[] { 1,0,1,1,0,1,1,0 };
        int n = arr.length;

        segregateZeroesOnes(arr, n);
        printArray(arr, n);

    }
}
0 0 0 1 1 1 1 1

एक सरणी में अलग 0s और 1s के लिए जटिलता विश्लेषण

समय जटिलता

पर) जहां "N" सरणी में तत्वों की संख्या है।

अंतरिक्ष जटिलता

पर) जहां "N" सरणी में तत्वों की संख्या है।

संदर्भ