牛客網算法(十三):調整數組順序使奇數位於偶數前面

題目描述

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

題目分析

       題目要求將所有的奇數移到數組的前半部分,所有的偶數移到數組的後半部分,但是要保證相對位置不變,所以我們不能簡單的將奇數和偶數的位置互換,這樣可能會改變相對位置,我們可以使用一個指針,第二個數開始遍歷,找到從第二個數開始後的第一個奇數,將這個奇數往前移動,當遇到奇數時停止移動,遇到偶數時互換位置。然後繼續往後找奇數,一直找到最後一個元素。

Java實現

	public void reOrderArray(int [] array) {
        int temp;
        for(int i = 1;i < array.length;i ++){//外層循環,從第二個數到最後一個數
            for(int j = i;j > 0 && array[j]%2 == 1;j --){//內層循環,當遍歷到的數爲奇數時進入循環
                if(array[j-1] % 2 == 0){//當前一個數爲偶數時,交換位置
                    temp = array[j-1];
                    array[j-1] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章