描述
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
代碼
public class Solution {
public void reOrderArray(int [] array) {
int doublenum=0;
for(int i=0;i<array.length-1;i++){
if(array[i]%2==0){
doublenum++;
}
if(doublenum!=0&array[i+1]%2!=0){
int cur=array[i+1];
// 1 2 3 4 5 6 7
// 1 3 2 4 5 6 7
//
for(int j=i;j>=i-doublenum+1;j--){
array[j+1]= array[j];
}
array[i-doublenum+1]=cur;
doublenum--;
}
}
}
}
新得
這道題的關鍵在於什麼時候移位,並且移動幾位,
移位的要求 :該數爲奇數,且前面至少有1個偶數
移動幾位:將該數前面的偶數依次後移1位,將該數前移 前面的偶數個數 位