美文网首页
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);
}

相关文章

  • 算法—排序篇2

    1、归并排序(Merging Sort) 归并排序(Merging Sort): 就是利用归并的思想实现排序⽅法....

  • 归并排序&快速排序

    归并排序 利用归并的思想实现排序方法,该算法采用经典的分治策略,分而治之。 代码实现 基础设置 归并排序 —— 非...

  • 算法

    分类 排序 希尔排序 代码实现 归并排序 代码实现 查找

  • java归并排序

    归并排序什么是归并排序:图解归并排序归并排序有两种实现方式,一是基于递归,而是基于迭代1)基于递归的归并排序: 基...

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

  • JavaScript实现排序算法

    实现了冒泡,选择,插入,快排,希尔,归并 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序

  • 算法排序之归并排序和快速排序

    归并排序和快速排序用的都是分治的思想,用递归的编程技巧来实现.咱们先来看归并排序. 归并排序 归并排序的核心思想就...

  • 数据结构与算法学习-归并排序和快速排序

    代码准备: 归并排序 归并排序(Merging Sort) 就是利用归并的思想实现排序方法. 它的原理是假设初始序...

  • 归并排序

    图解排序算法(四)之归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用...

  • 归并排序

    归并排序Java实现

网友评论

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

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