思路:
- 第一个指针 start 从数组的第一个元素出发,向尾部前进;
- 第二指针 end 从数组的最后一个元素出发,向头部前进;
- 当 start < end 时候,完成交换;
const DoublePointer = (arr) => {
if (Array.isArray(arr)) {
let start = 0;
let end = arr.length - 1;
while (start < end) {
while (arr[start] % 2 === 1) {
start++;
}
while (arr[end] % 2 === 0) {
end--;
}
if (start < end) {
[arr[start], arr[end]] = [arr[end], arr[start]]
}
}
}
return arr
}
const datArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const result = DoublePointer(datArr)
console.log(result)