输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
function reOrderArray(array)
{
var a = [];
var b = [];
for (var i = 0; i < array.length; i++) {
if(array[i] % 2 !== 0) a.push(array[i]); // if(array[i] & 1 === 1)
else b.push(array[i]);
}
return [...a,...b]; // 或 a.concat(b)
}
时间复杂度:O(N)
空间复杂度: O(N)
为了不改变奇数和奇数,偶数和偶数之间的相对位置,我们联想到,排序的方法中,稳定的方法有:冒泡、插入、归并等。
function reOrderArray(array)
{
var k = 0
for(var i = 0; i < array.length; i++){
if(array[i] % 2 == 1){
var j = i;
while(j > k){
var temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
j--;
}
k++;
}
}
return array;
}
时间复杂度:O(N2)
空间复杂度: O(1)
上一篇:12-数值的整数次方
下一篇:14-链表中倒数第k个结点