【刷算法】調解數組遞次使奇數位於偶數

問題形貌

輸入一個整數數組,完成一個函數來調解該數組中数字的遞次,使得一切的奇數位於數組的前半部份,一切的偶數位於位於數組的後半部份,並保證奇數和奇數,偶數和偶數之間的相對位置穩定。

剖析

看問題要求是保證奇數和奇數,偶數和偶數之間的相對位置穩定,且肯定要挪動部份元素,所以能夠聯想到冒泡排序的頭腦,不過時候複雜度O(n^2)略高,然則空間複雜度是O(1)。

另一種思緒,拓荒一個新數組,遍歷舊數組,碰到奇數就從舊數組append到新數組,遍歷終了以後再把舊數組中剩下的偶數全append到新數組。

完成

冒泡頭腦完成

function reOrderArray(a)
{
   if(a === null || a.length === 0)
        return [];
        for(var i = a.length; i > 0;i--){
        for(var j = 0;j <= i-1;j++) {
            if(a[j]%2===0&&a[j+1]%2===1){
                var temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    return a;
}

拓荒新數組完成

function reOrderArray(a)
{
   if(a === null || a.length === 0)
        return [];
    var res = [];
    var cur = 0;
    while(cur < a.length){
        if(a[cur]%2 === 1){
            res.push(a.splice(cur, 1));
        }else{
            cur++;
        }
    }
    
    return res.concat(a);
}
    原文作者:亞古
    原文地址: https://segmentfault.com/a/1190000015421408
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞