给定一个整数数组,请调整数组的顺序,使得所有奇数位于数组前半部分,所有偶数位于数组后半部分,时间复杂度越小越好。
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]
如果要求排好序的奇数/偶数部分都是有序的,该如何实现?