给定一个整数数组,请调整数组的顺序,使得所有奇数位于数组前半部分,所有偶数位于数组后半部分,时间复杂度越小越好。
package com.sort; import java.util.Arrays; public class TestSort { /** * 测试方法 * @param args */ public static void main(String[] args) { int [] a = {1,3,2,4,5,8,6,7,9}; TestSort.sortByOddEven(a); System.out.println(Arrays.toString(a)); } /** * 奇偶数排序 * @param array */ public static void sortByOddEven(int [] array){ int front = 0; int rear = array.length - 1; while (front < rear) { if(TestSort.isOdd(array[front])){ front++; } else if(TestSort.isEven(array[rear])){ rear--; } else { int temp = array[front]; array[front] = array[rear]; array[rear] = temp; } } } /** * 判断是否是奇数 * @param num * @return boolean */ public static boolean isOdd(int num){ return (num % 2 != 0); } /** * 判断是否是偶数 * @param num * @return boolean */ public static boolean isEven(int num){ return (num % 2 == 0); } } //程序执行结果 [1, 3, 9, 7, 5, 8, 6, 4, 2]如果要求排好序的奇数/偶数部分都是有序的,该如何实现?
