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);
}
  

最新文章

  1. C#中一些常用的加密和哈希处理
  2. Adaboost\GBDT\GBRT\组合算法
  3. 双操作系统Grub 引导修护
  4. (笔记)angular material 选项卡用法
  5. 几篇很有用的USB开发资料
  6. 【转】C#注册快捷键
  7. 关于用自带摄像机录像无法捕获uri 问题解决
  8. C++学习之嵌套类和局部类
  9. 非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术
  10. Spring学习之旅(五)极速创建Spring AOP java工程项目
  11. kubernetes ceph-rbd挂载步骤 类型PersistentVolume
  12. Apollo 启动脚本解析
  13. mysql获取相隔时间段的数据
  14. 2.7 清除FTP服务器文件
  15. awk、sed、grep三大shell文本处理工具之grep的应用
  16. Lintcode452-Remove Linked List Elements-Easy
  17. Casual Note of OS
  18. Go语言学习笔记十: 结构体
  19. 20145329《Java程序设计》第十周学习总结
  20. 大素数判断和素因子分解(miller-rabin,Pollard_rho算法) 玄学快

热门文章

  1. ListView 刷新加载控件
  2. SQL(oracle) 取得分组后最大值记录
  3. 【转载】我眼中的Oracle性能优化
  4. php-sql-parser sql防注入脚本
  5. for循环j = j++ 和 j = ++j
  6. Linux启动/停止/重启Mysql数据库的方法
  7. ListView下拉加载二(分页)
  8. 承接unity外包:2016年VR产业八大发展趋势
  9. (原创)vim配色------水果色,不伤眼。
  10. 2017 New Year’s Greetings from Sun Yat-sen University