NowCoder 調整數組順序使奇數位於偶數前面 指針

題意:給一個數組,要求使數組中奇數位於偶數前面且奇數與奇數,偶數與偶數之間相對位置不變
思路:可以用額外空間的話很簡單,開一個數組存奇數或者偶數即可;要求原地更改的話可以用指針,一個存偶數開始位置,另一個存偶數結束位置,每遇到一個偶數向後遍歷直到遇到奇數,再把這個奇數放到開頭,其餘偶數元素向右移1位,複雜度O(n²)

public class Solution {
    public void reOrderArray(int [] array) {
        int i = 0, j = 1;
        if (array.length <= 1) {
            return;
        }
        while (i < array.length) {
            if (array[i]%2 == 0) {
                j = i + 1;
                while (j < array.length && array[j]%2 == 0) {
                   j++;
                   if (j == array.length)
                	   return;
                }
                int t = array[j];
                for (int k = j; k > i; k--) {
                    array[k] = array[k-1];
                }
                array[i] = t;
            }
            i++;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章