問題形貌
輸入一個整數數組,完成一個函數來調解該數組中数字的遞次,使得一切的奇數位於數組的前半部份,一切的偶數位於位於數組的後半部份,並保證奇數和奇數,偶數和偶數之間的相對位置穩定。
剖析
看問題要求是保證奇數和奇數,偶數和偶數之間的相對位置穩定,且肯定要挪動部份元素,所以能夠聯想到冒泡排序的頭腦,不過時候複雜度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);
}