『剣指offer』は奇数を偶数の前に位置させる配列順序を調整する(Java)

7239 ワード

タイトルの説明
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置し、奇数と奇数、偶数と偶数の間の相対位置が変わらないことを保証する関数を実現します.
ACコード
次に、奇数と奇数、偶数と偶数の相対的な位置が変わらないことを保証します.
public class Solution {
    public void reOrderArray(int [] array) {
        for(int i=0;i<array.length-1;i++){
            for(int j=0;j<array.length-1-i;j++){
                if(array[j]%2==0&&array[j+1]%2==1){
                    int tmp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=tmp;
                }
            }
        }
    }
}

問題が数と数の間の相対的な位置を求めていない場合、以下の方法で解決することもできる.
class Solution {
    public void reOrderArray(int [] array) {
        int i=0;
        int j=array.length-1;
        while(i<=j){
            while(i<=j&&(array[i]%2==1))
                i++;
            while(i<=j&&(array[j]%2==0))
                j--;
            if(i<j){
             int tmp=array[j];
             array[j]=array[i];
             array[i]=tmp;
            }
        }
    }
}