1. 程式人生 > >劍指Offer-調整陣列順序使奇數位於偶數的前面

劍指Offer-調整陣列順序使奇數位於偶數的前面

題目描述

輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

題解:將整數陣列中的奇數放在一個數組,將偶數放在另一個數組中,然後合併這兩個陣列的資料。

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];
			}
		}
	}
}