짝수와 홀수 분리


난이도 쉽게
자주 묻는 질문 수행자 링크드 인 MakeMyTrip Paytm
배열 정렬

문제 정책

당신이 정수 정렬. “짝수와 홀수 분리”문제는 홀수와 짝수를 배열의 두 세그먼트에서 분리 할 수 ​​있도록 배열을 재 배열하도록 요청합니다. 짝수는 배열의 왼쪽으로 이동하고 홀수는 배열의 오른쪽으로 이동합니다.

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

설명 : 모든 짝수 요소는 홀수 요소 앞에 배치됩니다. Thay도 주어진 입력에서와 동일한 순서를 따릅니다.

짝수와 홀수를 분리하는 알고리즘

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.

설명

정수 배열을 제공했습니다. 어레이를 두 부분으로 재 배열해야합니다. 한 부분은 짝수이고 다른 부분은 홀수입니다. 주어진 배열 내에서이 작업을 수행해야합니다. 짝수는 배열의 왼쪽으로 이동해야합니다. 그리고 홀수는 배열의 오른쪽으로 이동해야합니다. 이를 위해 각 배열 요소를 확인합니다. 짝수인지 아닌지, 짝수이면 배열의 왼쪽으로 당깁니다. 이 작업을 짝수로 수행 한 후. 모든 홀수는 자동으로 배열의 오른쪽으로 이동합니다.

그런 다음 단일 배열에 대해 두 개의 인덱스 값을 사용하여 배열을 탐색합니다. 하나는 정기 순회 용이고 다른 하나는 짝수 인덱싱 용입니다. j 값으로 ​​배열을 순회합니다. 그리고 arr [j]가 짝수 인 경우 짝수인지 확인합니다. 그런 다음 arr [i]로 교체합니다. array [j]의 값이 짝수 인 경우에만 i를 증가시킵니다. 따라서 값이있는 숫자를 찾지 못하더라도 j 값을 계속 증가시킬 것입니다. 그리고 우리가 짝수를 찾으면. 그리고 나서 우리는 arr [j]를 홀수 인 arr [i]로 바꿀 것입니다.

짝수를 찾은 경우에만 배열 내에서 교체됩니다. 물론 홀수 또는 자체로 교체됩니다. 이 모든 작업이 끝나면 결과 배열을 인쇄합니다.

짝수와 홀수 분리

암호

짝수와 홀수를 분리하는 C ++ 코드

#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

짝수와 홀수를 분리하는 Java 코드

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

복잡성 분석

시간 복잡성

O (N) 어디에 "엔" 배열의 요소 수입니다. 여기서 우리는 인덱스 j가 N과 같지 않을 때까지 배열을 순회했습니다. 즉, 배열을 한 번만 순회했습니다. 따라서 선형 시간 복잡도입니다.

공간 복잡성

O (1) 추가 공간이 필요하지 않습니다. 알고리즘 자체는 일정한 공간 만 차지하지만 프로그램 전체는 선형 공간을 차지합니다.