題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
解題思路
使用額外數組,以空間換時間
創建倆個數組,一個爲奇數組一個爲偶數組,循環一次原數組,使用位運算判斷奇偶性插入奇數組或者偶數組,然後使用Java的本地方法完成數組的複製
public void reOrderArray(int[] array) {
int[] odd = new int[array.length];
//奇數數組元素個數
int a = 0;
//偶數數組元素個數
int b = 0;
int[] even = new int[array.length];
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 1) {
odd[a++] = array[i];
} else {
even[b++] = array[i];
}
}
//將奇數組和偶數組複製到原數組中
System.arraycopy(odd, 0, array, 0, a);
System.arraycopy(even, 0, array, a, b);
}