सबै नकारात्मक तत्त्वहरूलाई अन्त स्थानमा क्रममा अन्त गर्नका लागि सार्नुहोस्  


कठिनाई तह सजिलो
बारम्बार सोधिन्छ राजधानी एक citrix आईबीएम SAP ल्याबहरू टैक्सी Sसुर Twilio
एरे

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

"सबै नकारात्मक तत्त्वहरूलाई अन्त स्थानको क्रममा अन्त गर्नका लागि सार्नुहोस्" भन्छन कि तपाईंलाई एर्रे दिइन्छ सकारात्मक र नकारात्मक संख्या दुवै। समस्या कथन एर्रे को अन्तिम मा सबै नकारात्मक तत्वहरु सार्न सोध्छ।

उदाहरणका  

arr[] = { 1,2,-3,-5,2,7,-9,-11 }
1, 2, 2, 7, -3, -5, -9, -11
स्पष्टीकरण: सबै नकारात्मक मानहरू एर्रेको अन्तिममा सारिएको छ। र तिनीहरू प्रारम्भिक क्रममा पनि छन्।

एल्गोरिथ्ममा सबै नकारात्मक तत्वहरू सार्नको लागि अन्त स्थानको क्रममा अन्तमा सार्नुहोस्  

1. Declare an array same as the size of the original array.
2. Traverse the array and check if any number is greater than or equal to 0,
    1. If true then copy that number from the 0th position of the array we created.
3. Now traverse the array and check if any of the numbers is less than 0.
    1. If true, then copy that value to the array we created from the next position where the positive number ends.
4. Now copy that temporary array we created into the original array and print that array.

स्पष्टीकरण

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

पनि हेर्नुहोस्
क्रममा दोस्रो सबैभन्दा दोहोरिएको शब्द

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

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

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

सबै नकारात्मक तत्त्वहरूलाई अन्त स्थानमा क्रममा अन्त गर्नका लागि सार्नुहोस्पिन

कोड  

C ++ कोड सबै नकारात्मक तत्त्वहरूमा सार्नको लागि अन्त स्थानको क्रममा समाप्त हुनको लागि

#include<bits/stdc++.h>
using namespace std;

void segregateElements(int arr[], int n)
{
    int temp[n];

    int j = 0;

    for (int i = 0; i < n ; i++)
        if (arr[i] >= 0 )
            temp[j++] = arr[i];

    if (j == n || j == 0)
        return;

    for (int i = 0 ; i < n ; i++)
        if (arr[i] < 0)
            temp[j++] = arr[i];

    memcpy(arr, temp, sizeof(temp));
}

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

int main()
{
    int arr[] = { 1,2,-3,-5,2,7,-9,-11 };
    int n = sizeof(arr)/sizeof(arr[0]);

    segregateElements(arr, n);
    printArray(arr,n);

    return 0;
}
1 2 2 7 -3 -5 -9 -11

जाभा कोड मा सबै नकारात्मक तत्वहरु लाई सार्न को लागी समाप्त गर्न को लागी अतिरिक्त खाली ठाउँ संग

import java.util.Arrays;

class moveNegativeElement
{
    public static void segregateElements(int arr[], int n)
    {
        int temp[] = new int[n];

        int j = 0;

        for (int i = 0; i < n; i++)
            if (arr[i] >= 0)
                temp[j++] = arr[i];

        if (j == n || j == 0)
            return;

        for (int i = 0; i < n; i++)
            if (arr[i] < 0)
                temp[j++] = arr[i];

        for (int i = 0; i < n; i++)
            arr[i] = temp[i];
    }
    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 arg[])
    {
        int arr[] = { 1,2,-3,-5,2,7,-9,-11 };
        int n = arr.length;

        segregateElements(arr, n);
        printArray(arr,n);

    }
}
1 2 2 7 -3 -5 -9 -11

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

समय जटिलता

O (N) जहाँ "N" एर्रेमा एलिमेन्ट्सको तत्व हो। हामीले भर्खर एरेलाई मात्र पार गर्यौं जसको कारणले गर्दा हामीले रेखा समय जटिलता प्राप्त गरेका छौं।

पनि हेर्नुहोस्
दिइएको दायराको वरिपरि एर्रेको तीन तर्फ विभाजन

ठाउँ जटिलता

O (N) जहाँ "N" एर्रेमा एलिमेन्ट्सको तत्व हो। हामीले अस्थायी प्रयोगको लागि अतिरिक्त एर्रे सिर्जना गरेका छौं जहाँ हामीले तत्वहरूलाई चाहेको तरिकामा भण्डार गरेका छौं।