题目解释:
长度为 n 的整数数组,对数组进行整理,使得所有的奇数都在数组的前面,而所有的偶数都在数组的后面。例如数组为 {1,2,3,4,5,6}. 整理后为 {1,3,5,2,4,6}.
//判断前后两个元素是否需要交换
private static boolean isNeedSwap(int a, int b) {
if (a%2 != 0 && b%2 == 0) {//奇数在前,偶数在后,不需要交换
return false;
}
if (a%2 == 0 && b%2 != 0) {//偶数在前,奇数在后,需要交换
return true;
}
/*
* 如果声明排序后原来的相对位置不能变,则 return a==b
* 如果需要升序排列,则 return a<b
* 如需要降序排列,则 return a>b
*/
return a==b;//同奇同偶,顺序不变
}
//交换函数的实现函数
private static void Swap(int[] array, int a, int b) {
int temp;
temp = array[a];
array[a] = array[b];
array[b] = temp;
}
//利用插入排序来实现,也可以用其他排序方法
private static void InsertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
for (int j = i; j > 0; j--) {
if ( isNeedSwap(array[j-1], array[j]) ) {
Swap(array, j, j-1);
}
}
}
}
public static void main(String[] args) {
int[] a = {1,3,4,6,0,8,9,12,14,23};
InsertSort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}