Separate even and odd integers in a given array

Objec­tive:  Given an array which contains even and odd integers. Write an algorithm to separate even and odd numbers.

Example

int [] arrA = {1,2,3,4,6,8,7,12};
Output: [12, 2, 8, 4, 6, 3, 7, 1]

Approach: Swapping Indexes

  • Use two indexes, left and right.
  • Put left index at the start of array and right at the end of the array.
  • Increment left till odd number is not found.
  • Decrement right till even number is not found.
  • Swap left and right elements
  • Do it till left<right

Time Complexity: O(n)

Code:

import java.util.Arrays;
public class OddAndEven {
public static int[] arrange(int [] arrA){
int left =0;
int right = arrA.length1;
while(left<right){
if(arrA[left]%2==0)
left++;
else if(arrA[right]%2==1)
right;
else{
//swap left and right elements
int temp = arrA[left];
arrA[left] = arrA[right];
arrA[right] = temp;
left++;
right;
}
}
return arrA;
}
public static void main(String[] args) {
int [] arrA = {1,2,3,4,6,8,7,12};
System.out.println("Rearranging arrays using left and right indexes");
arrA = arrange(arrA);
System.out.println(Arrays.toString(arrA));
}
}

view raw
OddAndEven.java
hosted with ❤ by GitHub


Output:

Rearranging arrays using left and right indexes
[12, 2, 8, 4, 6, 3, 7, 1]