《剣指offer》牛客网java题解-配列顺序を调整して奇数を偶数の前に置く


整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置し、奇数と奇数、偶数と偶数の間の相対位置が変わらないことを保証する関数を実現します.
タイトルには相対位置が変わらないことが要求されていますが、この要求がなければ、二重ポインタがあり、頭と尾を別々にスキャンして交換することができます.
第1の解法は,空間で時間を変えることに等しい新しい配列を開くことである.
import java.util.ArrayList;
import java.util.List;
public class Solution {
    public void reOrderArray(int [] array) {
        List cur1 = new ArrayList();
        List cur2 = new ArrayList();
        for(int tmp:array){
            if ((tmp&1)==0){
                cur1.add(tmp);
            }
            else cur2.add(tmp);
        }
        int i =0;
        while (i < array.length) {
            for (int tmp:cur2){
                array[i]=tmp;
                i++;
            }
            for (int tmp:cur1){
                array[i]=tmp;
                i++;
            }
        }
    }
}

泡立ち方を採用できます
public class Solution {
    public void reOrderArray(int [] array) {
        for(int i=0;i<array.length-1;i++)
            for(int j=0;j<array.length-i-1;j++){
                if(array[j]%2==0 && array[j+1]%2==1){
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
    }
}