奇数が偶数より前になるように配列順序を調整します(java版)
3308 ワード
【題名説明】整数配列を入力し、その配列の数字の順序を調整する関数を実現し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置し、奇数と奇数、偶数と偶数の間の相対位置が変わらないことを保証する.
【解題の考え方1】//1.元の配列と等しい長さの配列を宣言する.//2.奇数の個数を算出する.元の配列を遍歴し、奇数であれば配列の前半に置く.偶数であれば後半に置く.
【解題の考え方2】//1.挿入ソートのように、現在の数は奇数で、前に探して、偶数に出会ったら前に挿入します.
【解題の考え方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;
}
}
}