추가 공간이 허용 된 순서대로 모든 부정적인 요소를 끝으로 이동


난이도 쉽게
자주 묻는 질문 자본 하나 시트릭스 IBM SAP 연구소 Taxi4Sure 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.

설명

우리는 주어진 정수 음수와 양수를 모두 포함하는 배열. 우리는 모든 음의 요소를 배열의 마지막 / 끝으로 이동해야하는 방식으로 배열을 재 배열하도록 요청했습니다. 그런 다음 양수 및 음수 요소에 대한 배열을 개별적으로 탐색합니다. 먼저, 긍정적 인 요소를 왼쪽으로 당겨야하는 작업을 수행해야합니다. 그런 다음 모든 부정적인 요소를 오른쪽으로 이동하십시오.

원래 배열과 동일한 크기의 추가 배열을 만들어야합니다. 여기에서는 원하는 숫자 배열을 저장하기 때문입니다. 변수 인덱스를 선택하여 0으로 초기화합니다.이 변수는 양수 요소와 음수 요소를 구별하는 데 도움이됩니다. 이제 우리는 배열을 만들었습니다. 원래 배열에서 임시 배열로 양수를 입력합니다.

탐색하는 동안 배열 요소가 0보다 크거나 같은지 확인한 다음 해당 요소 만 임시 배열의 시작 위치에서 임시 배열로 복사합니다. 또한 인덱스 값을 동시에 늘리기 때문에 마지막으로 양수 요소를 복사했기 때문에 저장 될 다음 요소의 값 인덱스가 있으며,이를 통해 마지막에 모든 음수 요소를 푸시 할 것입니다.

이제 배열을 다시 탐색하고 각 요소가 0이면 XNUMX보다 작은 지 확인한 다음 그 값을 중단 한 인덱스 값에서 임시 배열로 밀어 넣기 시작합니다. 마지막으로 해당 배열을 원래 배열에 복사 한 다음 인쇄하거나 단순히 임시 배열을 인쇄하는 것은 모두 동일한 것입니다. 그리고 우리는 필요한 출력을 얻습니다.

추가 공간이 허용 된 순서대로 모든 부정적인 요소를 끝으로 이동

암호

추가 공간이 허용 된 순서대로 모든 음수 요소를 끝으로 이동하는 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

추가 공간이 허용 된 순서대로 모든 부정적인 요소를 끝까지 이동하는 Java 코드

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

복잡성 분석

시간 복잡성

의 위에) 어디에 "엔" 배열의 요소입니다. 우리는 선형 시간 복잡성을 달성 한 배열을 단순히 순회했습니다.

공간 복잡성

의 위에) 어디에 "엔" 배열의 요소입니다. 원하는 방식으로 요소를 저장 한 임시 사용을 위해 추가 배열을 만들었습니다.