package com.java.util.collection;
import java.util.Arrays; import java.util.Collections;
public class EvenOddSorting {
public static void eventOddSort(int[] arr) { int i =0; int j =arr.length-1; while(i<j) { if(isEven(arr[i]) && isOdd(arr[j])) { i++; j--; } else if(!isEven(arr[i]) && !isOdd(arr[j])) { swap(i,j,arr); } else if(isEven(arr[i])){ i++; } else{ j--; } } display(arr); // even number sorting Arrays.sort(arr,0,i); insertionSort(arr,i,arr.length); // odd number sorting display(arr); } /** * Instead of insertion sort, you can use merge or quick sort. * @param arr * @param firstIndex * @param lastIndex */ public static void insertionSort(int[] arr, int firstIndex, int lastIndex){ for(int i=firstIndex+1;i<lastIndex;i++){ int key =arr[i]; int j=i-1; while(j>=firstIndex && key > arr[j]) { arr[j+1] = arr[j]; arr[j] =key; j=j-1; } System.out.println("\nAfter "+(i+1) +" Iteration : "); display(arr); } } public static void display(int[] arr) { System.out.println("\n"); for(int val:arr){ System.out.print(val +" "); } } private static void swap(int pos1, int pos2, int[] arr) { int temp = arr[pos1]; arr[pos1]= arr[pos2]; arr[pos2]= temp; } public static boolean isOdd(int i) { return (i & 1) != 0; } public static boolean isEven(int i) { return (i & 1) == 0; } public static void main(String[] args) { int arr[]={12, 67, 1, 34, 9, 78, 6, 31}; eventOddSort(arr); }
}
source share