題目解釋:
長度為 n 的整數(shù)數(shù)組,對數(shù)組進(jìn)行整理,使得所有的奇數(shù)都在數(shù)組的前面,而所有的偶數(shù)都在數(shù)組的后面。例如數(shù)組為 {1,2,3,4,5,6}. 整理后為 {1,3,5,2,4,6}.
//判斷前后兩個(gè)元素是否需要交換
private static boolean isNeedSwap(int a, int b) {
if (a%2 != 0 && b%2 == 0) {//奇數(shù)在前,偶數(shù)在后,不需要交換
return false;
}
if (a%2 == 0 && b%2 != 0) {//偶數(shù)在前,奇數(shù)在后,需要交換
return true;
}
/*
* 如果聲明排序后原來的相對位置不能變,則 return a==b
* 如果需要升序排列,則 return a<b
* 如需要降序排列,則 return a>b
*/
return a==b;//同奇同偶,順序不變
}
//交換函數(shù)的實(shí)現(xiàn)函數(shù)
private static void Swap(int[] array, int a, int b) {
int temp;
temp = array[a];
array[a] = array[b];
array[b] = temp;
}
//利用插入排序來實(shí)現(xiàn),也可以用其他排序方法
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]+" ");
}
}