題目描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
題目分析
題目要求將所有的奇數移到數組的前半部分,所有的偶數移到數組的後半部分,但是要保證相對位置不變,所以我們不能簡單的將奇數和偶數的位置互換,這樣可能會改變相對位置,我們可以使用一個指針,第二個數開始遍歷,找到從第二個數開始後的第一個奇數,將這個奇數往前移動,當遇到奇數時停止移動,遇到偶數時互換位置。然後繼續往後找奇數,一直找到最後一個元素。
Java實現
public void reOrderArray(int [] array) {
int temp;
for(int i = 1;i < array.length;i ++){//外層循環,從第二個數到最後一個數
for(int j = i;j > 0 && array[j]%2 == 1;j --){//內層循環,當遍歷到的數爲奇數時進入循環
if(array[j-1] % 2 == 0){//當前一個數爲偶數時,交換位置
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
}