题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

思路

首先寻找第一个奇数,取出,然后将第一个奇数之前的元素全部往后移一位,讲找到的第一个奇数放在0号位置。

依次在第一个奇数之后的元素中寻找奇数,并做移动操作。就可以保证原来的相对顺序。

function reOrderArray(array)
{
let j=0;
let m=0;
for(let i=0;i<array.length;i++){
if(array[i]%2==1){
let temp=array[i];
let ti=i;
for(;ti>0;ti--){
array[ti]=array[ti-1]
}
array[0]=temp;
j=i;
break;
}
}
for(++j;j<array.length;j++){
if(array[j]%2==1){
let temp=array[j];
let tj=j;
for(;tj>m;tj--){
array[tj]=array[tj-1];
}
array[++m]=temp;
}
}
return array;
}

如果不需要考虑相对位置则:

思路

设定两个指针

第一个指针start从数组第一个元素出发,向尾部前进

第二个指针end从数组的最后一个元素出发,向头部前进

start遍历到偶数,end遍历到奇数时,交换两个数的位置

当start>end时,完成交换

代码

    function reOrderArray(array) {
if (Array.isArray(array)) {
let start = 0;
let end = array.length - 1;
while (start < end) {
while (array[start] % 2 === 1) {
start++;
}
while (array[end] % 2 === 0) {
end--;
}
if (start < end) {
[array[start], array[end]] = [array[end], array[start]]
}
}
}
return array;
}
9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

9、调整数组顺序使奇数位于偶数前面------------&gt;剑指offer系列-LMLPHP

05-26 13:45