网站首页 > 技术文章 正文
使用堆排序算法对数字数组进行排序。
- 使用递归。
- 使用扩展运算符 (…) 克隆原始数组arr。
- 使用闭包来声明一个变量l, 和一个函数heapify。
- 使用for循环和Math.floor()结合heapify从数组创建最大堆。
- 使用for循环反复缩小范围,heapify根据需要使用和交换值以对克隆数组进行排序。
const heapsort = arr => {
const a = [...arr];
let l = a.length;
const heapify = (a, i) => {
const left = 2 * i + 1;
const right = 2 * i + 2;
let max = i;
if (left < l && a[left] > a[max]) max = left;
if (right < l && a[right] > a[max]) max = right;
if (max !== i) {
[a[max], a[i]] = [a[i], a[max]];
heapify(a, max);
}
};
for (let i = Math.floor(l / 2); i >= 0; i -= 1) heapify(a, i);
for (i = a.length - 1; i > 0; i--) {
[a[0], a[i]] = [a[i], a[0]];
l--;
heapify(a, 0);
}
return a;
};
heapsort([2, 8, 2, 4, 1, 7, 1, 6, 3]); // [1, 1, 2, 2, 3, 4, 6, 7, 8]
猜你喜欢
- 2025-06-13 8个步骤,创建项目管理时间表(建立项目管理系统)
- 2025-06-13 配电柜里最全电气原件 安装 排序 电气元件名称 让你一目了然 电工必备
- 2025-06-13 html基础必备-列表标记,前端小白一看就会
- 2025-06-13 家族坟墓的多种排列形式,墓葬布局的排列布局(图解)
- 2024-10-03 17种编程语言实现排序算法-插入排序
- 2024-10-03 前端工程师算法系列(4)-归并排序 归并排序js代码
- 2024-10-03 插入排序java java排序实现
- 2024-10-03 插入排序算法 插入排序算法c语言
- 2024-10-03 十大排序算法(javascript) 十大排序算法c语言
- 2024-10-03 常考算法题:无重复字符串的排列组合
你 发表评论:
欢迎- 最近发表
-
- Python常用标准库(pickle序列化和JSON序列化)
- Linux json-c使用_linux解析json数据
- 源码推荐(03.04):微信支付的测试,Json数据解析
- 打开JSON文件的六种方法,总有一种适合你
- springmvc项目中接收Android提交json数据
- 一篇文章让你详细了解何为JSON_json到底是什么
- FlinkSQL处理复杂JSON的思路_flinksql解析json数组
- 超级好用的轻量级JSON处理命令jq_json使用教程
- .NET性能系列文章二:Newtonsoft.Json vs System.Text.Json
- 推荐几个开发必备的JSON工具_推荐几个开发必备的json工具
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)