सम र विषम संख्याहरू अलग गर्नुहोस्


कठिनाई तह सजिलो
बारम्बार सोधिन्छ समग्र LinkedIn MakeMyTrip पेटम
एरे क्रमबद्ध

समस्या वक्तव्य

मानौं तपाईंसँग एक छ पूर्णांक array। समस्या "Segregate सम र विषम संख्या" ले एरेलाई पुन: संगठित गर्न सोध्दछ ताकि बिजोर र पनि संख्याहरू एर्रेको दुई खण्डहरूमा अलग गर्न सकिन्छ। समान संख्याहरू पनि एर्रेको बायाँ तर्फ सारिनेछ र बिजोर नम्बरहरू एर्रेको दायाँ तर्फ सारिनेछ,

उदाहरणका

arr[]={ 2,4,5,1,7,8,9,7}
2 4 8 1 7 5 9 7

स्पष्टीकरण: सबै एलिमेन्टहरू पनि विषम तत्वहरू अघि राखिन्छ थायले पनि उही क्रमलाई पछ्याउँछ जुन उनीहरूले दिएको इनपुटमा थिए।

एल्गोरिथ्ममा Segregate समान र बिजोर नम्बरहरू

1. Set i = -1, j = 0.
2. While j is not equal to n(where n is the length of the array),
    1. Check if arr[j] is even or odd if it is even
        1. Do i++, and swap the values of arr[i] and arr[j] respectively.
    2. Increase the value of j by 1.
3. Print the array.

स्पष्टीकरण

हामीले पूर्णांक एरे दिएका छौं। हामीलाई दुई भागमा एरे पुन: व्यवस्थित गर्न भनियो। एउटा भाग सम संख्याको हो र अर्को बेजोड संख्याको। हामीले दिइएको एर्रे भित्र यो गरिरहनुपर्दछ। यस्तो कि समान संख्याहरू एर्रेको बाँया पट्टिमा सारिनु पर्छ। र बिजोर नम्बरहरू एर्रेको दाँया पट्टि सारिनु पर्छ। यसको लागि हामी प्रत्येक एर्रे एलिमेन्टहरू जाँच गर्नेछौं। यदि यो हो वा हैन, यदि यो स even्ख्या हो भने पनि हामी यसलाई एर्रेको बाँया तानि तानिरहेका छौं। यो संख्या सहित यो अपरेशन प्रदर्शन पछि। सबै अनौंठो संख्या स्वचालित रूपमा एर्रेको दाहिने तिर जान्छ।

त्यसो भए हामी एउटा एर्रेको लागि दुई सूचकांक मानहरू लिएर एर्रेलाई ट्रान्सभर्स गर्नेछौं। एउटा नियमित ट्रयाभर्सिंगको लागि हो र अर्को संख्या अंकहरू अनुक्रमणिका लागि हो। हामी j को मानको साथ एर्रेस पार गर्नेछौं। र जाँच गर्नुहोस् कि कुनै पनि संख्याको अर्थ पनि यदि एर [j] बराबर हो भने। त्यसो भए हामी यसलाई एर [i] सँग बदल्नेछौं। हामी i बढाउछौं जब एरे [j] को मान बराबर भेटियो भने। ताकि हामी बहुमूल्य नम्बरहरू पनि फेला पारेनौं तर हामी जे को मूल्य बढाउँदै जान्छौं। र त्यसपछि यदि हामीले समान संख्या फेला पार्‍यौं। त्यसो भए हामी एर [j] एरको साथ बदल्छौं [i] जुन एउटा बिजोर नम्बर मानिन्छ।

यो मात्र एर्रे भित्र बदली हुन्छ जब सम संख्याहरू फेला पर्दछ। र निस्सन्देह, कि त यो अनौंठो संख्याको साथ वा आफैसँगै बदलिनेछ। यी सबै अपरेशन्स पछि हामी परिणाम एरे प्रिन्ट गर्नेछौं।

सम र विषम संख्याहरू अलग गर्नुहोस्

कोड

C ++ कोड Segregate सम र विषम संख्यामा

#include<iostream>

using namespace std;

void getArrangedEvenOdd(int arr[], int n)
{

    int i = -1, j = 0;
    while (j != n)
    {
        if (arr[j] % 2 == 0)
        {
            i++;
            swap(arr[i], arr[j]);
        }
        j++;
    }
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = { 2,4,5,1,7,8,9,7};
    int n = sizeof(arr) / sizeof(int);
    getArrangedEvenOdd(arr, n);
    return 0;
}
2 4 8 1 7 5 9 7

जाभा कोड सेग्रेगेट सम र विषम संख्यामा

public class rearrangeEvenOdd
{
    public static void getArrangedEvenOdd( int arr[], int n)
    {

        int i = -1, j = 0;
        while (j != n)
        {
            if (arr[j] % 2 == 0)
            {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
            j++;
        }
        for (int k = 0; k < n; k++)
            System.out.print(arr[k] + " ");
    }
    public static void main(String args[])
    {
        int arr[] = { 2,4,5,1,7,8,9,7};
        int n = arr.length;
        getArrangedEvenOdd (arr, n);
    }
}
2 4 8 1 7 5 9 7

जटिलता विश्लेषण

समय जटिलता

ऊ) जहाँ "N" एर्रेमा एलिमेन्ट्सको संख्या हो। यहाँ हामीले एरे ट्र्यावर्स गरेका छौं जबसम्म इन्डेक्स j N बराबर हुँदैन। यसको मतलब हामीले एर्रे एक पटक अनलि ट्र्याभ गर्यौं। र यसरी रेखा समय जटिलता।

ठाउँ जटिलता

O (१) कुनै अतिरिक्त ठाउँको आवश्यक छ। एल्गोरिथ्म आफैं मात्र स्थिर स्थान लिन्छ तर पूरै कार्यक्रम लाईन रेखांकन लिन्छ।