JS数组双指针案例-奇偶数顺序调整

32 阅读1分钟

思路:

  1. 第一个指针 start 从数组的第一个元素出发,向尾部前进;
  2. 第二指针 end 从数组的最后一个元素出发,向头部前进;
  3. 当 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)