js如何合并两个有序数组

美女程序员鼓励师

1、新建空数组res存储最终排序后的数组。

2、比较两个有序数组的头部,年轻人出队推进res。

3、如果两个数组仍然值得,重复第二步。

实例

Array.prototype.mergeSort = function () {

  const rec = (arr) => {

    if (arr.length === 1) {

      return arr;

    }

    const mid = Math.floor(arr.length / 2);

    const left = arr.slice(0, mid);

    const right = arr.slice(mid, arr.length);

    const orderLeft = rec(left);

    const orderRight = rec(right);

    const res = [];

    while (orderLeft.length || orderRight.length) {

      if (orderLeft.length && orderRight.length) {

        res.push(

          orderLeft[0] < orderRight[0] ? orderLeft.shift() : orderRight.shift()

        );

      } else if (orderLeft.length) {

        res.push(orderLeft.shift());

      } else if (orderRight.length) {

        res.push(orderRight.shift());

      }

    }

    return res;

  };

  const res = rec(this);

  res.forEach((n, i) => {

    this[i] = n;

  });

};

 

const arr = [5, 4, 3, 2, 1];

arr.mergeSort();

以上就是js合并两个有序数组的方法,希望对大家有所帮助。更多js学习指路:js教程

推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

以上是 js如何合并两个有序数组 的全部内容, 来源链接: utcz.com/z/546324.html

回到顶部