美文网首页
js 实现归并排序

js 实现归并排序

作者: 无人像妳i | 来源:发表于2017-10-26 09:45 被阅读71次
    function mergeSort(arr) {
      var len = arr.length;
      if(len > 1) {
        var index = Math.floor(len / 2);
        left = arr.slice(0,index); //得到下标从0~index-1的数组
        right = arr.slice(index);  //得到下标从index开始到末尾的数组
        return merge(mergeSort(left) , mergeSort(right));  里面采用递归
      }else {
        return arr;
      }
    }
    
    function merge(left , right) {   //该函数与快排类似,但是仔细发现,每次left或者right都是要shift掉第一个元素,表示left或者right是会变化的,最后arr.concat,因为不知道left或者right其中一个哪个剩下元素,所以要将剩下的元素给加上
      var arr = [];
      while(left.length && right.length) {
        if(left[0] < right[0]) {
          arr.push(left.shift());
        }else {
          arr.push(right.shift())
        }
      }
      return arr.concat(left , right);
    }
    

    相关文章

      网友评论

          本文标题:js 实现归并排序

          本文链接:https://www.haomeiwen.com/subject/xruhpxtx.html