13.調整陣列順序使奇數位於偶數前面
阿新 • • 發佈:2018-12-19
題目描述
輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。題目解答
public class Solution { public void reOrderArray(int [] array) { if(array==null || array.length==0){ return; } int i=0,j; while(i<array.length){ while(i<array.length && !isEven(array[i])){ //找到第一個偶數 i++; } j=i+1; //從i+1位開始往後尋找奇數 while(j<array.length && isEven(array[j])){ //找到第一個奇數 j++; } if(j<array.length){ //將[i...j-1]從j-1位開始依次往後移一位 int tmp=array[j]; for(int j2=j-1;j2>=i;j2--){ array[j2+1]=array[j2]; } array[i++]=tmp; //將原來j位置的奇數交換到i位置,i++ }else{ break; } } }private boolean isEven(int n){//判斷是不是偶數 return (n&1)==0; } }
要想保證原有次序,則只能順次移動或相鄰交換。