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排序算法:归并排序相关推荐

  1. 经典排序算法 - 归并排序Merge sort

    经典排序算法 - 归并排序Merge sort 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例 无序数组[6 ...

  2. python排序算法——归并排序(附代码)

    python排序算法 --归并排序 文章目录 python排序算法 --归并排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  3. javascript排序算法总结

    javascript排序算法总结 这里是对数据结构中的几种算法做一个总结 简单的排序算法有:①冒泡排序 ②选择排序 ③插入排序 高级的排序算法有: ①希尔排序 ②快速排序 一.冒泡排序 如图所示为冒泡 ...

  4. 十大经典排序算法-归并排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  5. 优雅的 JavaScript 排序算法(ES6)

    面试官:小伙子排序算法了解吗? 回答:我能写出来四种冒泡排序,两种选择排序,两种插入排序,两种哈希排序,两种归并排序,两种堆排序,四种快速排序. 用我自己的方式. 本文中常使用 swap 函数,在这里 ...

  6. 排序算法 —— 归并排序

    归并排序算法 1.划分问题:把序列分成元素个数尽量相等的两半. 2.递归求解:把两半元素分别排序. 3.合并问题:把两个有序表合并成一个. 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用 ...

  7. 二分归并排序算法_第五篇排序算法|归并排序

    0x01,前言闲叙 最近几年很少看电视了,因为没时间看了,除了偶尔刷刷头条,基本上不会花大块的时间沉迷于电视剧,综艺,这或许就是短视频时代所带来的一些改变吧,我们都会深受其中. 0x02,先看下这篇文 ...

  8. 【算法】排序算法——归并排序

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言        归并排序是分治法在排序问题上的运用,因此为了更好地了解归并排序,首先了解 ...

  9. 八大排序算法 —— 归并排序

    归并排序 归并算法的理解比较难,是一种区别于插入算法,选择算法和交换算法的一种独特算法,需要逐步理解. 核心思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治( ...

  10. 基础排序算法----归并排序

    归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使 ...

最新文章

  1. mysql每组随机一条_MySql分组后随机获取每组一条数据的操作
  2. SpringBoot快速开发利器:Spring Boot CLI
  3. 牛客16732 序列(排列组合)
  4. 38动感菜单 38 jQuery And CSS Drop Down Multi Level Menu Solutions
  5. 云原生持续交付的模式和实践
  6. AE中Identify查询工具的实现
  7. 微信游戏推荐系统大揭秘
  8. Word2016目录怎么自动生成
  9. fits文件读取代码
  10. 昨夜今晨全球大公司动态
  11. 牛逼哄哄的京东 JD-hotkey
  12. See!AI正在悄然改变着医学诊断、假肢和视觉辅助
  13. assist 下载链接
  14. Java中的委托和继承(Delegation and Inheritance)
  15. 支持tcam的服务器,一种支持TCAM规则更新和压缩方法.doc
  16. CC2640之看门狗
  17. 生产BOM、销售BOM、标准BOM的区别
  18. html5背景图片铺满整个背景
  19. html之简单表格网站制作
  20. atom编辑器的常用插件

热门文章

  1. vue 跨域 反向代理
  2. 苹果视频剪辑调色音频制作软件,正版App Store商城在线安装方法 Final Cut Pro+Motion+Compressor+Logic Pro X+DaVinci Resolve Studi
  3. 微信小程序canvas合成图片(海报),生成的图片展示不出来,或者空白。
  4. python中的字符串详解(附实现文字跑马灯效果)
  5. JS数组遍历的效率比较
  6. 微信小程序集合2(外卖+商城半成品+教育商城+外卖商城+婚庆商店+简易抽奖+外卖购物车+小天气+打卡签到+游戏社区攻略)
  7. XMind 8 Update 9 升级 Pro 版
  8. mysql存储value_MySQL key/value存储方案(转)
  9. 使用adb工具查询安卓端口对应的程序
  10. Android 按键防止过快点击(防抖),在ButterKnife中的简单解决方案。