Separate Even and Odd Numbers

Separate Even and Odd Numbers

Medium C++ Arrays 39 views
Explanation Complexity

Problem Statement

Rearrange array so all even numbers come before odd numbers. This teaches array partitioning logic.
Logic: Create two arrays for even/odd, then merge back

Input Format

An integer n (size of array)
Then n integers.

Output Format

Array rearranged so that:

• All even numbers come first

• All odd numbers come after
(Order inside even and odd groups is maintained)

Example

7
1 2 3 4 5 6 7
2 4 6 1 3 5 7

Constraints

• n ≥ 1

• Use extra arrays for even and odd

Concept Explanation

Even and odd numbers are separated first, then combined back into the original array.

Step-by-Step Explanation

1.Create an empty array even[].

2.Create an empty array odd[].

3.Traverse the original array from start to end.

4.For each element:

• If element is even, add it to even[].

• Else, add it to odd[].

5.Copy all elements of even[] back to the original array.

6.After that, copy all elements of odd[] to the array.

7.Print the final array.

Concept Explanation

Even and odd numbers are separated first, then combined back into the original array.

Step-by-Step Explanation

1.Create an empty array even[].

2.Create an empty array odd[].

3.Traverse the original array from start to end.

4.For each element:

• If element is even, add it to even[].

• Else, add it to odd[].

5.Copy all elements of even[] back to the original array.

6.After that, copy all elements of odd[] to the array.

7.Print the final array.

Input / Output Format

Input Format
An integer n (size of array)
Then n integers.
Output Format
Array rearranged so that:

• All even numbers come first

• All odd numbers come after
(Order inside even and odd groups is maintained)
Constraints
• n ≥ 1

• Use extra arrays for even and odd

Examples

Input:
7 1 2 3 4 5 6 7
Output:
2 4 6 1 3 5 7

Example Solution (Public)

C++
void question9_separate_even_odd() {
    int arr[] = {12, 7, 18, 5, 20, 9};
    int size = 6;
    int result[6];
    int index = 0;
    
    // First add all even numbers
    for(int i = 0; i < size; i++) {
        if(arr[i] % 2 == 0) {
            result[index++] = arr[i];
        }
    }
    
    // Then add all odd numbers
    for(int i = 0; i < size; i++) {
        if(arr[i] % 2 != 0) {
            result[index++] = arr[i];
        }
    }
    
    cout << "Separated array: ";
    for(int i = 0; i < size; i++) {
        cout << result[i] << " ";
    }
    cout << endl;
}

Official Solution Code

void question9_separate_even_odd() {
    int arr[] = {12, 7, 18, 5, 20, 9};
    int size = 6;
    int result[6];
    int index = 0;
    
    // First add all even numbers
    for(int i = 0; i < size; i++) {
        if(arr[i] % 2 == 0) {
            result[index++] = arr[i];
        }
    }
    
    // Then add all odd numbers
    for(int i = 0; i < size; i++) {
        if(arr[i] % 2 != 0) {
            result[index++] = arr[i];
        }
    }
    
    cout << "Separated array: ";
    for(int i = 0; i < size; i++) {
        cout << result[i] << " ";
    }
    cout << endl;
}
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.