奇数が偶数より前になるように配列順序を調整します(java版)


【題名説明】整数配列を入力し、その配列の数字の順序を調整する関数を実現し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置し、奇数と奇数、偶数と偶数の間の相対位置が変わらないことを保証する.
【解題の考え方1】//1.元の配列と等しい長さの配列を宣言する.//2.奇数の個数を算出する.元の配列を遍歴し、奇数であれば配列の前半に置く.偶数であれば後半に置く.
public class Solution {
    public void reOrderArray(int [] array) {
        int len = array.length, count = 0;
        int[] arr = new int[len];
        for(int a:array){
            if(a%2 !=0){
                count++;
            }
        }
        for(int i=0,j=0;i<len;i++){
            if(array[i]%2 != 0){
                arr[j] = array[i];
                j++;
            }else{
                arr[count] = array[i];
                count++;
            } 
        }
        for(int i=0;i<len;i++){
            array[i] = arr[i];
        }
    }
}

【解題の考え方2】//1.挿入ソートのように、現在の数は奇数で、前に探して、偶数に出会ったら前に挿入します.
public void reOrderArray(int [] array) {
    for(int i=1;i<array.length;i++){
         int target = array[i];
         if(array[i] % 2 == 1){
             int j = i;
             while(j >= 1 && array[j-1] % 2 == 0){
                 array[j] = array[j-1];
                 j--;
             }
             array[j] = target;
         }
     }
}