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

算法—合并排序—js(场景:大数据且需稳定性)

合并排序基本思想(稳定且高效)
将数组递归拆分为最小单元,合并两个有序数组。

特点:
时间复杂度:O(n log n)
空间复杂度:O(n)
稳定排序

// 合并排序-分解
function mergeSort(arr) {if (arr.length < 2) return arr;const mid = Math.floor(arr.length / 2);let left = arr.slice(0, mid);let right = arr.slice(mid)if (left.length > 1) left = mergeSort(left);if (right.length > 1) right = mergeSort(right);return merge(left,right)
};// 合并排序-合并排序
function merge(left,right) {let result = [], i = j = 0;while(i<left.length && j<right.length) {if (left[i] < right[j]) {result.push(left[i]);i++;} else {result.push(right[j]);j++;}}return [...result, ...left.slice(i), ...right.slice(j)];
};

在这里插入图片描述

相关文章:

  • 80 7816协议与串口uart协议时序图
  • 【CPU】中断即时性
  • 自然语言处理(9)—— 共现词矩阵及Python实现
  • C#进阶学习(八)常见的泛型数据结构类(3)SortedDictionary<TKey, TValue>与SortedList<TKey, TValue>
  • OJ - 设计循环队列
  • 交换机端口安全
  • C++学习:六个月从基础到就业——内存管理:内存泄漏与避免
  • chili3d调试6 添加左侧面板
  • 【第四十一周】文献阅读:HippoRAG:受神经生物学启发的大型语言模型长期记忆机制
  • OSPF特殊区域
  • 金融图QCPFinancial
  • mac监控linux上mysql性能(Grafana+Prometheus+mysqld_exporter)
  • VSCode PIO使用Jlink SWD烧录Stm32
  • 【C++初阶】第15课—模版进阶
  • 进程与线程:01 CPU管理的直观想法
  • 股票分析技术指标【RSV、KDJ】
  • 【Ollama:本地LLM工具】
  • windows服务器及网络:论如何安装(虚拟机)
  • 驱动开发硬核特训 · Day 15:电源管理核心知识与实战解析
  • 基于javaweb的SpringBoot儿童爱心管理系统设计与实现(源码+文档+部署讲解)
  • 美航母撞船后又遇战机坠海,专家:长时间作战部署疲于奔命是主因
  • A股三大股指涨跌互现:3343股收涨,两市成交超1.1万亿元
  • 聚焦各领域顶尖工匠,《上海工匠》第十季于五一播出
  • 中国人保不再设监事会,国寿集团未再设置监事长职务
  • 东风着陆场做好各项搜救准备,迎接神舟十九号航天员天外归来
  • 纪念|海上金石学的兴盛与王昶《金石萃编》