js归并排序法
2024-10-20 04:13:46
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);
}
最新文章
- C#中一些常用的加密和哈希处理
- Adaboost\GBDT\GBRT\组合算法
- 双操作系统Grub 引导修护
- (笔记)angular material 选项卡用法
- 几篇很有用的USB开发资料
- 【转】C#注册快捷键
- 关于用自带摄像机录像无法捕获uri 问题解决
- C++学习之嵌套类和局部类
- 非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术
- Spring学习之旅(五)极速创建Spring AOP java工程项目
- kubernetes ceph-rbd挂载步骤 类型PersistentVolume
- Apollo 启动脚本解析
- mysql获取相隔时间段的数据
- 2.7 清除FTP服务器文件
- awk、sed、grep三大shell文本处理工具之grep的应用
- Lintcode452-Remove Linked List Elements-Easy
- Casual Note of OS
- Go语言学习笔记十: 结构体
- 20145329《Java程序设计》第十周学习总结
- 大素数判断和素因子分解(miller-rabin,Pollard_rho算法) 玄学快
热门文章
- ListView 刷新加载控件
- SQL(oracle) 取得分组后最大值记录
- 【转载】我眼中的Oracle性能优化
- php-sql-parser sql防注入脚本
- for循环j = j++ 和 j = ++j
- Linux启动/停止/重启Mysql数据库的方法
- ListView下拉加载二(分页)
- 承接unity外包:2016年VR产业八大发展趋势
- (原创)vim配色------水果色,不伤眼。
- 2017 New Year’s Greetings from Sun Yat-sen University