将一个数组里的数字中奇数放前面,偶数放后面。
解法原理:在首尾设置指针,
1.首部指针从头到尾遍历,一遇到偶数则停下
2.尾部指针从后面往前遍历,一遇到奇数就停下
3.首指针和尾指针的元素互换
4.如果首指针和尾指针还没相遇,则继续第1步,否则结束
此时数组元素就保证奇数在前,偶数在后了。
代码如下:
// const target = Array(10).fill(0).map((_,i)=>i+1);
// 造个随机正整数组成的数组
const target = Array(10).fill(0).map((_,i)=>Math.round(Math.random()*10));
function OddBeforeEven(arr){
let head = 0, tail = arr.length - 1
while(head<tail){
while(head<tail && (arr[head]& 1 )=== 1) {
head++;
}
while(head<tail && (arr[tail]& 1 )=== 0) {
tail--;
}
if(head!==tail) {
const t = arr[head];
arr[head] = arr[tail];
arr[tail] = t;
head++;
tail--;
}
}
return arr
}
console.log(OddBeforeEven(target))