当前位置: 首页 > news >正文

归并排序JS

当然,下面是使用JavaScript编写的归并排序的示例代码。归并排序是一种分治算法,其基本思想是将数组分成两半进行排序,然后将排序后的结果合并在一起。

function mergeSort(arr) {if (arr.length <= 1) {return arr;}const middle = Math.floor(arr.length / 2);const left = arr.slice(0, middle);const right = arr.slice(middle);return merge(mergeSort(left), mergeSort(right));
}function merge(left, right) {let result = [];let leftIndex = 0;let rightIndex = 0;while (leftIndex < left.length && rightIndex < right.length) {if (left[leftIndex] < right[rightIndex]) {result.push(left[leftIndex]);leftIndex++;} else {result.push(right[rightIndex]);rightIndex++;}}return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
}const arr = [34, 7, 23, 32, 5, 62, 30];
const sortedArr = mergeSort(arr);
console.log(sortedArr); // 输出:[5, 7, 23, 30, 32, 34, 62]

mergeSort 函数是递归函数,用于不断将数组分成两半。如果数组长度为1或0,那么它已经排序,可以直接返回。否则,将数组分成左右两半,并对每一半进行递归排序。然后,调用 merge 函数将两个排序后的数组合并在一起。

merge 函数负责合并两个已排序的数组。它创建一个新的结果数组,然后遍历两个输入数组的元素,依次选择较小的元素放入结果数组。最后,任何剩余的元素都被连接到结果数组的末尾。

http://www.lryc.cn/news/129745.html

相关文章:

  • matlab 计算点云平均密度
  • c++ | uint8_t、uint16_t、unint32_t 和size_t
  • mysql 超大 sql 文件导入过程
  • 【悬挂绝缘子的串效模型】测量每个绝缘子盘之间的电压并测量串效研究(Simulink)
  • P3957 [NOIP2017 普及组] 跳房子
  • VR数字工厂多元化展现,打造数字企业工厂名片
  • uniapp封装组件,选中后右上角显示对号√样式(通过css实现)
  • 华为OD面试(部分)
  • 从零做软件开发项目系列之一综论软件项目开发
  • msvcp110.dll是什么意思,msvcp110.dll丢失的解决方法
  • 【报错】git push --set-upstream origin XXXX重名
  • 探索树算法:C语言实现二叉树与平衡树
  • Ubuntu 20.04(服务器版)安装 Anaconda
  • IDEA项目实践——JavaWeb简介以及Servlet编程实战
  • 【Freertos基础入门】队列(queue)的使用
  • 从零构建深度学习推理框架-8 卷积算子实现
  • 【Spring Boot】JdbcTemplate数据连接模板 — JdbcTemplate入门
  • 视频汇聚集中存储EasyCVR平台调用iframe地址视频无法播放,该如何解决?
  • 从今天起,重新出发
  • Java多态详解(1)
  • optee读取Arm系统寄存器的模板
  • VSCode 使用总结
  • GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发
  • LeetCode450. 删除二叉搜索树中的节点
  • Java动态调试技术原理及实践
  • Lua + Redis 实战代码
  • 类的访问限定符,实例化,对象存储方式,this指针
  • 《Linux从练气到飞升》No.15 Linux 环境变量
  • Spring Boot 重启命令
  • pdf怎么合并在一起?这几个合并方法了解一下