function reOrderArray(array)
{
let odd = []
let even = []
array.forEach(num => {
if (num % 2 === 0) {
even.push(num)
} else {
odd.push(num)
}
})
return [...odd, ...even]
// write code here
} function reOrderArray(array) {
let lastOddIdx = -1
let len = array.length
for(let i = 0; i< len; i++) {
let num = array[i]
if (num % 2 !== 0) {
// 删除
array.splice(i, 1)
// 变更顺序
array.splice(lastOddIdx + 1, 0, num)
lastOddIdx++
}
}
return array
} function reOrderArray(array)
{
//输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
//使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,
//并保证奇数和奇数,偶数和偶数之间的相对位置不变。
let odds = [];
let evens = [];
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 == 1) {
//res.unshift(array[i]);
odds.push(array[i]);
} else {
//res.push(array[i]);
evens.push(array[i]);
}
}
return odds.concat(evens);
}
module.exports = {
reOrderArray : reOrderArray
}; function reOrderArray(array)
{
// write code here
//将奇数和偶数进行数组分离 在将两个数组拼接在一起
var odd = [];
var even = [];
array.forEach((item,index)=>{
//if判断法
/* if(item % 2 ==0){
even.push(item);
}else{
odd.push(item)
}8*/
//三目运算法
item % 2 ==0 ? even.push(item):odd.push(item);
});
var result =odd.concat(even) ;
return result;
}
/**
* 我的解题思路:
* 1.看起来是个数组排序问题,那么怎么用一行代码解决呢
* 2.使用Array.prototype.sort方法即可实现
*
* @param {*} array
*/
function reOrderArray(array)
{
// write code here
return array.sort((a, b) => !(a % 2) && b % 2);
}
/**
* 排序的解题思路:
* 1.排序的方法很多种,这里选用插入排序的方法
* 2.从左到右依次查找奇数
* 3.找到奇数后将其一步步前移
*
* @param {*} array
*/
function insertReOrderArray(array)
{
// write code here
let k = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] % 2) {
let j = i;
while (j > k) {
let temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
j--;
}
k++;
}
}
return array;
}
/**
* 社区TOP的解题思路:
* 1.换个思路,使用空间换取时间的做法
* 2.先找出奇数,再找出偶数,组合成新的数组
*
* @param {*} array
*/
function topReOrderArray(array)
{
// write code here
const odd = array.filter(n => n % 2 === 1);
const even = array.filter(n => n % 2 === 0);
return odd.concat(even);
}
function reOrderArray(array)
{
// write code here
var arr1 = [];
var arr2 = [];
for (var i = 0;i < array.length;i++){
if(array[i] % 2 == 0){
arr2.push(array[i]);
}else{
arr1.push(array[i]);
}
}
return arr1.concat(arr2);
} function reOrderArray(array)
{
// write code here
if (!array || !array.length) return;
let cur = -1;
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 === 1) {
const oddVal = array[i];
let even;
for (even = i - 1; even > cur; even--) {
array[even + 1] = array[even];
}
array[even + 1] = oddVal;
cur++;
}
}
} 另如果题目把奇偶值改成奇偶下标的话,只需把 array[i] % 2 === 1 改成 i % 2 === 1 就可以了。 function reOrderArray(array)
{
// write code here
let array1 = [];
let array2 = [];
for(let i=0; i<array.length; i++){
if(array[i]%2===0){
array2.push(array[i]);
}else{
array1.push(array[i]);
}
}
return array1.concat(array2);
}
/** * 1.要想保证原有次序,则只能顺次移动或相邻交换。 * 2.i从左向右遍历,找到第一个偶数。 * 3.j从i+1开始向后找,直到找到第一个奇数。 * 4.将[i,...,j-1]的元素整体后移一位,最后将找到的奇数放入i位置,然后i++。 * 5.終止條件:j向後遍歷查找失敗。 */ public void reOrderArray2(int [] a) { if(a==null||a.length==0) return; int i = 0,j; while(i<a.length){ while(i<a.length&&!isEven(a[i])) i++; j = i+1; while(j<a.length&&isEven(a[j])) j++; if(j<a.length){ int tmp = a[j]; for (int j2 = j-1; j2 >=i; j2--) { a[j2+1] = a[j2]; } a[i++] = tmp; }else{// 查找失敗 break; } } } boolean isEven(int n){ if(n%2==0) return true; return false; }