js归并排序   
function mergeSort (arr){

if (arr.length < 2){
//控制语句,结束递归
return arr;
}
var middle = Math.floor(arr.length/2);
var left = arr.slice(0, middle);
var right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right))
}
function merge(left, right){
var result = [];
var num;
while (left.length && right.length){
if(left[0] > right[0]){
num = right.shift();
result.push(num);
} else {
num = left.shift();
result.push(num);
}
}
return result.concat(left, right);
}

先把大数组分为只有一个数的数组,再两两比较,组成一个新的数组,不断的比较再进行组合,最后成为一个数组

js归并排序的更多相关文章

  1. js归并排序法

    function mergeSort(arr) { var len = arr.length; if(len > 1) { var index = Math.floor(len / 2); le ...

  2. js归并排序实现

    let arr = [3,4,2,8,1,1,2,2,3,3,4,5]; const merge = function(L,M,R) { let arr2=[]; let i=0; let p1 = ...

  3. 基于JS实现归并排序算法

    /*********************************************JS归并排序************************************************ ...

  4. js排序算法04——归并排序

    归并排序是一种分治算法.思想是把原数组切分成较小的数组,直到每个小数组只有一个位置,再将小数组归并成较大的数组,直到最后有一个完整有序的大数组. js实现如下: function mergeSort( ...

  5. 归并排序算法及其JS实现

    归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(con ...

  6. js实现冒泡排序(bubble sort)快速排序(quick sort)归并排序(merge sort)

    排序问题相信大家都比较熟悉了.用js简单写了一下几种常用的排序实现.其中使用了es6的一些语法,并且不仅限于数字--支持各种类型的数据的排序.那么直接上代码: function compare (a, ...

  7. 使用 js 实现十大排序算法: 归并排序

    使用 js 实现十大排序算法: 归并排序 归并排序 refs js 十大排序算法 All In One https://www.cnblogs.com/xgqfrms/p/13947122.html ...

  8. js实现归并排序

    function merge(s_arr, d_arr, start, middle, end){ var s_temp = start; var m_temp = middle+1; var tem ...

  9. JS快速排序 希尔排序 归并排序 选择排序

    /* 快速排序 1.1 算法描述 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用.快速排序是一种既不浪费空间又可以快一 ...

随机推荐

  1. keras tensorboard的使用

    http://blog.csdn.net/xiaojiajia007/article/details/72865764 https://stackoverflow.com/questions/4211 ...

  2. poj2114 寻找树上存在长度为k点对,树上的分治

    寻找树上存在长度为k点对,树上的分治  代码和  这个  差不多 ,改一下判断的就好 #include <iostream> #include <algorithm> #inc ...

  3. 如何删除Sitecore CMS中的项目

    在此“如何”帖子中,我将介绍如何删除项目以及如何在Sitecore CMS中恢复已删除的项目. 删除项目 有多种方便的方法可以删除Sitecore中的项目. 从功能区 在内容树中选择您要删除的项目. ...

  4. git克隆远程项目并创建本地对应分支

    http://jingyan.baidu.com/article/19192ad83ea879e53e5707ce.html

  5. ubuntu 18.04下安装配置HBase问题记录

    参考资料: Ubuntu下HBase安装与使用(shell+Java API) 问题 无法正常启动hbase,在Log里报错java.lang.ClassNotFoundException: org. ...

  6. SpringMVC中参数接收

    /** *  * SpringMVC中参数接收 * 1.接收简单类型 int String * 2.可以使用对象pojo接收 * 3.可以使用集合数据接收参数 * 页面: name="ids ...

  7. Linux的简单介绍.

    Linux操作系统概述: Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境.Linux是由Linux Torvalds(林纳斯·托瓦兹)起初开发 ...

  8. Centos环境自写脚本查看使用php或nginx占用内存

    在CentOs6.4下,用root权限测试. # cd ~ //进入home目录 # vim .bashrc //编辑文件,把下面代码放入地址 mem () { top -n1 -b | head - ...

  9. windows 10下oracle相关异常及处理方法

    话说起来,不以oracle性能优化,数据库维护为主业已经有四五年了,这两年基本上以mysql为主. pl/sql登录后提示空白对话框.将ORACLE_HOME设置为oracle 11g的目录. IMP ...

  10. Windows环境下ELK平台的搭建

    .背景 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采 ...