JavaScript排序算法:归并排序
function mergeSort(arr) {if (Array.isArray(arr)) {if (arr.length < 2) { //数组长度小于2直接返回原数组return arr;}let splitIndex = Math.floor(arr.length / 2); //将数组切割为两份// 将数值拆分为2个数组let leftArr = arr.slice(0, splitIndex);let rightArr = arr.slice(splitIndex);return merge(mergeSort(leftArr), mergeSort(rightArr)); //将数组持续切割,直到数组length小于2}
}function merge(leftArr, rightArr) {let temp = [];while (leftArr.length && rightArr.length) {if (leftArr[0] <= rightArr[0]) {temp.push(leftArr.shift());} else {temp.push(rightArr.shift());}}while (leftArr.length) temp.push(leftArr.shift());while (rightArr.length) temp.push(rightArr.shift());return temp;
}console.log('mergeSort', mergeSort([38, 27, 43, 3, 9, 82, 10]));
JavaScript排序算法:归并排序相关推荐
- 经典排序算法 - 归并排序Merge sort
经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例 无序数组[6 ...
- python排序算法——归并排序(附代码)
python排序算法 --归并排序 文章目录 python排序算法 --归并排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
- javascript排序算法总结
javascript排序算法总结 这里是对数据结构中的几种算法做一个总结 简单的排序算法有:①冒泡排序 ②选择排序 ③插入排序 高级的排序算法有: ①希尔排序 ②快速排序 一.冒泡排序 如图所示为冒泡 ...
- 十大经典排序算法-归并排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- 优雅的 JavaScript 排序算法(ES6)
面试官:小伙子排序算法了解吗? 回答:我能写出来四种冒泡排序,两种选择排序,两种插入排序,两种哈希排序,两种归并排序,两种堆排序,四种快速排序. 用我自己的方式. 本文中常使用 swap 函数,在这里 ...
- 排序算法 —— 归并排序
归并排序算法 1.划分问题:把序列分成元素个数尽量相等的两半. 2.递归求解:把两半元素分别排序. 3.合并问题:把两个有序表合并成一个. 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用 ...
- 二分归并排序算法_第五篇排序算法|归并排序
0x01,前言闲叙 最近几年很少看电视了,因为没时间看了,除了偶尔刷刷头条,基本上不会花大块的时间沉迷于电视剧,综艺,这或许就是短视频时代所带来的一些改变吧,我们都会深受其中. 0x02,先看下这篇文 ...
- 【算法】排序算法——归并排序
[fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 归并排序是分治法在排序问题上的运用,因此为了更好地了解归并排序,首先了解 ...
- 八大排序算法 —— 归并排序
归并排序 归并算法的理解比较难,是一种区别于插入算法,选择算法和交换算法的一种独特算法,需要逐步理解. 核心思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治( ...
- 基础排序算法----归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使 ...
最新文章
- mysql每组随机一条_MySql分组后随机获取每组一条数据的操作
- SpringBoot快速开发利器:Spring Boot CLI
- 牛客16732 序列(排列组合)
- 38动感菜单 38 jQuery And CSS Drop Down Multi Level Menu Solutions
- 云原生持续交付的模式和实践
- AE中Identify查询工具的实现
- 微信游戏推荐系统大揭秘
- Word2016目录怎么自动生成
- fits文件读取代码
- 昨夜今晨全球大公司动态
- 牛逼哄哄的京东 JD-hotkey
- See!AI正在悄然改变着医学诊断、假肢和视觉辅助
- assist 下载链接
- Java中的委托和继承(Delegation and Inheritance)
- 支持tcam的服务器,一种支持TCAM规则更新和压缩方法.doc
- CC2640之看门狗
- 生产BOM、销售BOM、标准BOM的区别
- html5背景图片铺满整个背景
- html之简单表格网站制作
- atom编辑器的常用插件
热门文章
- vue 跨域 反向代理
- 苹果视频剪辑调色音频制作软件,正版App Store商城在线安装方法 Final Cut Pro+Motion+Compressor+Logic Pro X+DaVinci Resolve Studi
- 微信小程序canvas合成图片(海报),生成的图片展示不出来,或者空白。
- python中的字符串详解(附实现文字跑马灯效果)
- JS数组遍历的效率比较
- 微信小程序集合2(外卖+商城半成品+教育商城+外卖商城+婚庆商店+简易抽奖+外卖购物车+小天气+打卡签到+游戏社区攻略)
- XMind 8 Update 9 升级 Pro 版
- mysql存储value_MySQL key/value存储方案(转)
- 使用adb工具查询安卓端口对应的程序
- Android 按键防止过快点击(防抖),在ButterKnife中的简单解决方案。