1. 程式人生 > >13.調整陣列順序使奇數位於偶數前面

13.調整陣列順序使奇數位於偶數前面

題目描述

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

題目解答

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

要想保證原有次序,則只能順次移動或相鄰交換。