Related Articles

# 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 numbers``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)``            ``swap (arr[evenInd], arr[oddInd]);``             ` `        ``else``            ``break``;``    ``}``}`` ` `// function to print the array``void` `printArray(``int` `arr[], ``int` `n)``{``    ``for` `(``int` `i = 0; i < n; i++)``        ``cout << arr[i] << ``" "``;``}`` ` `// Driver program to test above``int` `main()``{``    ``int` `arr[] = { 3, 6, 12, 1, 5, 8 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);`` ` `    ``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 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++)``        ``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 array``def` `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 numbers``using` `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 contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.