Even numbers at even index and odd numbers at odd index

• Difficulty Level : Easy
• Last Updated : 25 May, 2021

Given an array of size n containing equal number of odd and even numbers. The problem is to arrange the numbers in such a way that all the even numbers get the even index and odd numbers get the odd index. Required auxiliary space is O(1).
Examples :

Input : arr[] = {3, 6, 12, 1, 5, 8}
Output : 6 3 12 1 8 5

Input : arr[] = {10, 9, 7, 18, 13, 19, 4, 20, 21, 14}
Output : 10 9 18 7 20 19 4 13 14 21

Approach :

• Start from the left and keep two index one for even position and other for odd positions.
• Traverse these index from left.
• At even position there should be even number and at odd positions, there should be odd number.
• Whenever there is mismatch , we swap the values at odd and even index.

Below is the implementation of the above approach :

CPP

 // C++ implementation to arrange// odd and even numbers#include using namespace std;  // function to arrange odd and even numbersvoid arrangeOddAndEven(int arr[], int n){   int oddInd = 1;    int evenInd = 0;    while (true)    {        while (evenInd < n && arr[evenInd] % 2 == 0)            evenInd += 2;                      while (oddInd < n && arr[oddInd] % 2 == 1)            oddInd += 2;                      if (evenInd < n && oddInd < n)            swap (arr[evenInd], arr[oddInd]);                      else            break;    }}  // function to print the arrayvoid printArray(int arr[], int n){    for (int i = 0; i < n; i++)        cout << arr[i] << " ";}  // Driver program to test aboveint main(){    int arr[] = { 3, 6, 12, 1, 5, 8 };    int n = sizeof(arr) / sizeof(arr[0]);      cout << "Original Array: ";    printArray(arr, n);      arrangeOddAndEven(arr, n);      cout << "\nModified Array: ";    printArray(arr, n);      return 0;}

Java

 // Java implementation to// arrange odd and even numbers  import java.util.*;import java.lang.*;  class GfG {  // function to arrange// odd and even numberspublic static void arrangeOddAndEven(int arr[], int n){    int oddInd = 1;    int evenInd = 0;    while (true)    {        while (evenInd < n && arr[evenInd] % 2 == 0)            evenInd += 2;                      while (oddInd < n && arr[oddInd] % 2 == 1)            oddInd += 2;                      if (evenInd < n && oddInd < n)            {                int temp = arr[evenInd];                arr[evenInd] = arr[oddInd];                arr[oddInd] = temp;            }                      else            break;    }}  // function to print the arraypublic static void printArray(int arr[], int n){    for (int i = 0; i < n; i++)        System.out.print(arr[i] + " ");}      // Driver function public static void main(String argc[]){    int arr[] = { 3, 6, 12, 1, 5, 8 };    int n = 6;      System.out.print("Original Array: ");    printArray(arr, n);      arrangeOddAndEven(arr, n);      System.out.print("\nModified Array: ");    printArray(arr, n);}}  // This code is contributed by Sagar Shukla

Python3

 # Python3 implementation to# arrange odd and even numbers  def arrangeOddAndEven(arr,  n):          oddInd = 1    evenInd = 0    while (True):                  while (evenInd < n and arr[evenInd] % 2 == 0):            evenInd += 2                       while (oddInd < n and arr[oddInd] % 2 == 1):            oddInd += 2                       if (evenInd < n and oddInd < n):                temp = arr[evenInd]                arr[evenInd] = arr[oddInd]                arr[oddInd] = temp;                       else:            break   # function to print the arraydef printArray(arr,  n):    for i in range(0,n):        print(arr[i] , "",end="")         # Driver function def main():    arr = [ 3, 6, 12, 1, 5, 8 ]    n = 6       print("Original Array: ",end="")    printArray(arr, n)       arrangeOddAndEven(arr, n)       print("\nModified Array: ",end="")    printArray(arr, n)      if __name__ == '__main__':    main()# This code is contributed by 29AjayKumar

C#

 // C# implementation to// arrange odd and even numbersusing System;  class GFG {      // function to arrange    // odd and even numbers    public static void arrangeOddAndEven(int[] arr, int n)    {     int oddInd = 1;     int evenInd = 0;    while (true)    {        while (evenInd < n && arr[evenInd] % 2 == 0)            evenInd += 2;                       while (oddInd < n && arr[oddInd] % 2 == 1)            oddInd += 2;                       if (evenInd < n && oddInd < n)            {                int temp = arr[evenInd];                arr[evenInd] = arr[oddInd];                arr[oddInd] = temp;            }                       else            break;    }    }      // function to print the array    public static void printArray(int[] arr, int n)    {        for (int i = 0; i < n; i++)            Console.Write(arr[i] + " ");    }      // Driver function    public static void Main()    {        int[] arr = { 3, 6, 12, 1, 5, 8 };        int n = 6;          Console.Write("Original Array: ");        printArray(arr, n);          arrangeOddAndEven(arr, n);          Console.Write("\nModified Array: ");        printArray(arr, n);    }}  // This code is contributed by Sam007

Javascript



Output :

Original Array: 3 6 12 1 5 8
Modified Array: 6 3 12 1 8 5

Time Complexity: O(n).
Auxiliary Space: O(1).
This article is contributed by Ayush Jauhari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.