归并排序 js实现

40 阅读1分钟
 function merge(left, right) {
      let tmp = [];
      while (left.length > 0 && right.length > 0) {
        if (left[0] < right[0]) tmp.push(left.shift());
        else tmp.push(right.shift());
      }
      return tmp.concat(left, right);
    }

    function mergeSort(arr) {
      if (arr.length <= 1) return arr;
      else {
        let mid = parseInt(arr.length / 2);
        let left = arr.slice(0, mid);
        let right = arr.slice(mid);
        return merge(mergeSort(left), mergeSort(right));
      }
    }
    mergeSort([3, 1, 2, 4, 3, 2, 5, 3, 8, 9]);