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

算法—合并排序—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)];
};

在这里插入图片描述

http://www.xdnf.cn/news/692.html

相关文章:

  • 23种设计模式-结构型模式之装饰器模式(Java版本)
  • C#进阶学习(八)常见的泛型数据结构类(3)SortedDictionary<TKey, TValue>与SortedList<TKey, TValue>
  • 大语言模型推理能力的强化学习现状理解GRPO与近期推理模型研究的新见解
  • PG CTE 递归 SQL 翻译为 达梦版本
  • 将 JSON 字符串转化为对象的详细笔记 (Java示例)
  • 【AI量化第26篇】以配置为核心的工程化研究管理——基于miniQMT的量化交易回测系统开发实记
  • 15. 三数之和
  • 计算机网络中的网络层:架构、功能与重要性
  • llama factory
  • springboot+vue3+mysql+websocket实现的即时通讯软件
  • C++数组栈与链表栈
  • 软考高级系统架构设计师-第16章 数学与经济管理
  • 切换 Python 版本(配置path方式,含trae)
  • 一个最简单的 Model Context Protocol 的例子
  • Halcon应用:相机标定
  • C++入门篇(下)
  • 线性DP:最长上升子序列(可不连续,数组必须连续)
  • Matlab 复合模糊PID
  • NumPy:数值计算基础与高性能数组操作
  • 如何使用人工智能大模型,免费快速写工作总结?
  • Linux基础指令 补充(自用)
  • 【微知】服务器如何获取服务器的SN序列号信息?(dmidecode -t 1)
  • Origin将双Y轴柱状图升级为双向分组柱状图
  • 二、在springboot 中使用 AIService
  • 【JAVA EE初阶】多线程(1)
  • 代码随想录算法训练营第五十三天 | 105.有向图的完全可达性 106.岛屿的周长
  • 如何轻松实现用户充值系统的API自动化测试
  • QML、Qt Quick 、Qt Quick Controls 2
  • 如何成为Prompt工程师:学习路径、核心技能与职业发展
  • STM32时钟树