Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.lang.reflect.Array;
- import java.util.Arrays;
- public class OddEvenSort {
- /*
- 8
- 6 10 13 5 8 17 2 5
- 5 5 13 17 10 8 6 2
- odds in asscending
- evens in descending
- */
- private static void printNumbers(int[] input) {
- for (int i = 0; i < input.length; i++) {
- System.out.print(input[i] + " ");
- }
- System.out.print(System.lineSeparator());
- }
- private static final char INCREASING = '>';
- private static final char DECREASING = '<';
- private static void insertionSort(int array[], char order) {
- switch (order){
- case INCREASING:
- for (int i = 1; i < array.length; i++) {
- int key = array[i];
- int j = i - 1;
- while (j > -1 && array[j] > key) {
- array[j + 1] = array[j];
- j--;
- }
- array[j + 1] = key;
- //printNumbers(array);
- }
- break;
- case DECREASING:
- for (int i = 1; i < array.length; i++) {
- int key = array[i];
- int j = i - 1;
- while (j > -1 && array[j] < key) {
- array[j + 1] = array[j];
- j--;
- }
- array[j + 1] = key;
- //printNumbers(array);
- }
- break;
- }
- }
- private static boolean isEven(int a){
- return a % 2 == 0;
- }
- static void oddEvenSort(int array[], int n) {
- int odds[] = new int[n];
- int evens[] = new int[n];
- int lenOdds = 0;
- int lenEvens = 0;
- for (int i = 0; i < array.length; i++) {
- if (isEven(array[i])){
- evens[lenEvens++] = array[i];
- } else {
- odds[lenOdds++] = array[i];
- }
- }
- /*
- System.out.println("Odds");
- printNumbers(odds);
- System.out.println("Evens");
- printNumbers(evens);
- */
- odds = Arrays.copyOf(odds, lenOdds);
- evens = Arrays.copyOf(evens, lenEvens);
- insertionSort(odds, INCREASING);
- insertionSort(evens, DECREASING);
- int k = 0;
- for (int i = 0; i < lenOdds; i++) {
- array[k++] = odds[i];
- }
- for (int i = 0; i < lenEvens; i++) {
- array[k++] = evens[i];
- }
- //printNumbers(array);
- }
- public static void main(String[] args) throws IOException {
- int i;
- BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
- String s = stdin.readLine();
- int n = Integer.parseInt(s);
- s = stdin.readLine();
- String[] pom = s.split(" ");
- int[] a = new int[n];
- for (i = 0; i < n; i++)
- a[i] = Integer.parseInt(pom[i]);
- oddEvenSort(a, n);
- for (i = 0; i < n - 1; i++)
- System.out.print(a[i] + " ");
- System.out.print(a[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment