劍指Offer-調整陣列順序使奇數位於偶數的前面
阿新 • • 發佈:2018-12-04
題目描述
輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
題解:將整數陣列中的奇數放在一個數組,將偶數放在另一個數組中,然後合併這兩個陣列的資料。
public class Solution { public void reOrderArray(int[] array) { //空陣列,長度為1的陣列或者是null則直接不用計算 if (array == null || array.length == 0 || array.length == 1) { return; } else { //定義兩個陣列存放資料,一個放奇數,一個放偶數 //陣列長度為傳入的陣列array的長度,防止array存放的全是偶數或者奇數的情況 int arr1[] = new int[array.length]; int arr2[] = new int[array.length]; //定義兩個數記錄奇數有幾個,偶數有幾個 int ji = 0,ao = 0; //遍歷array for(int i = 0;i < array.length;i++) { //判斷是否是奇數 if(array[i] % 2 != 0) { arr1[ji++]=array[i]; }else { arr2[ao++]=array[i]; } } //將奇數放入array中 for(int i = 0;i < ji;i++) { array[i] = arr1[i]; } for(int i = 0;i < ao;i++) { //在奇數的後面按順序放入偶數 array[ji + i] = arr2[i]; } } } }