news 2026/4/25 15:56:28

完全二叉树与堆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
完全二叉树与堆

完全二叉树,仅允许最底层的节点不完全填满,且最底层的节点必须从左至右依次连续填充。

堆(heap)是一种满足特定条件的完全二叉树,主要可分为两种类型:
1,小顶堆(min heap):任意节点的值 小于其子节点的值。
2,大顶堆(max heap):任意节点的值 大于其子节点的值。

编程语言提供的是优先队列(priority queue),定义为具有优先级排序的队列。堆通常用于实现优先队列,大顶堆相当于元素按从大到小的顺序出队的优先队列。我们可以将“优先队列”和“堆”看作等价的数据结构。

/* 初始化堆 */// 初始化小顶堆Queue<Integer>minHeap=newPriorityQueue<>();// 初始化大顶堆(使用 lambda 表达式修改 Comparator 即可)Queue<Integer>maxHeap=newPriorityQueue<>((a,b)->b-a);/* 元素入堆 */maxHeap.offer(1);maxHeap.offer(3);maxHeap.offer(2);maxHeap.offer(5);maxHeap.offer(4);/* 获取堆顶元素 */intpeek=maxHeap.peek();// 5/* 堆顶元素出堆 */// 出堆元素会形成一个从大到小的序列peek=maxHeap.poll();// 5peek=maxHeap.poll();// 4peek=maxHeap.poll();// 3peek=maxHeap.poll();// 2peek=maxHeap.poll();// 1/* 获取堆大小 */intsize=maxHeap.size();/* 判断堆是否为空 */booleanisEmpty=maxHeap.isEmpty();/* 输入列表并建堆 */minHeap=newPriorityQueue<>(Arrays.asList(1,3,2,5,4));

堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为Ologn 。给定一组数据,我们用堆存储,然后不断地执行出堆操作,就可以得到有序数据。Top-k 是一个经典算法问题,可以使用堆数据结构高效解决 ,选择热度前 5 ,选取销量前 5 的商品等都是常见的应用。

/* 基于堆查找数组中最大的 k 个元素 */Queue<Integer>topKHeap(int[]nums,intk){// 初始化小顶堆Queue<Integer>heap=newPriorityQueue<Integer>();// 将数组的前 k 个元素入堆for(inti=0;i<k;i++){heap.offer(nums[i]);}// 从第 k+1 个元素开始,保持堆的长度为 kfor(inti=k;i<nums.length;i++){// 若当前元素大于堆顶元素,则将堆顶元素出堆、当前元素入堆if(nums[i]>heap.peek()){heap.poll();heap.offer(nums[i]);}}returnheap;}

总共执行了 n 轮入堆和出堆,堆的最大长度为k ,因此时间复杂度为nlogk 。该方法的效率很高,当
k较小时,时间复杂度趋向n ;当 k 较大时,时间复杂度不会超过 nlogn 。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 17:06:56

wl-explorer:Vue开发者的终极文件管理解决方案

wl-explorer&#xff1a;Vue开发者的终极文件管理解决方案 【免费下载链接】wl-explorer 用于vue框架的文件管理器插件&#xff0c;云盘、网盘。File manager plug-in for vue framework, cloud disk. 项目地址: https://gitcode.com/gh_mirrors/wl/wl-explorer 在当今…

作者头像 李华
网站建设 2026/4/25 9:35:10

可控硅驱动光耦:工业控制的隐形守护者

在工业自动化的精密脉络中&#xff0c;信号传输的稳定性与安全性如同设备的神经中枢&#xff0c;一旦受到干扰或破坏&#xff0c;可能引发生产停滞甚至安全事故。可控硅驱动光耦作为工业控制领域的核心元件&#xff0c;凭借其独特的光电隔离技术与卓越的抗干扰性能&#xff0c;…

作者头像 李华
网站建设 2026/4/17 12:18:06

终极Node.js版本管理指南:3步快速安装配置nvm-desktop

在现代Web开发中&#xff0c;Node.js版本管理是每个开发者必须面对的重要课题。nvm-desktop作为一款功能强大的桌面应用程序&#xff0c;专门为Node.js开发者设计&#xff0c;能够高效管理多个Node.js版本。无论你是前端工程师、后端开发者还是全栈程序员&#xff0c;这款工具都…

作者头像 李华
网站建设 2026/4/24 22:48:10

Zabbix 6 与 PHP 5 版本**完全不兼容

Zabbix 6 与 PHP 5 版本完全不兼容&#xff0c;强行匹配会导致 Zabbix 前端无法正常运行&#xff0c;甚至出现严重的功能异常或报错&#xff0c;具体表现和原因如下&#xff1a; 一、直接结果&#xff1a;Zabbix 前端无法启动/运行 Zabbix 6 对 PHP 的最低要求是 PHP 7.2&#…

作者头像 李华
网站建设 2026/4/17 9:12:48

企业微信“群机器人”消息推送的限制与绕过思路技术分析

一、引言 (Introduction) 1.1 背景&#xff1a; 企业微信群机器人是应用快速推送通知到群聊的官方、便捷方式。然而&#xff0c;在外部客户群和个性化营销场景下&#xff0c;其功能限制明显。 1.2 目的&#xff1a; 深入分析企业微信群机器人消息推送的技术限制&#xff0c;并…

作者头像 李华
网站建设 2026/4/23 17:46:37

LocalAI终极部署手册:3分钟快速搭建本地AI服务平台

LocalAI终极部署手册&#xff1a;3分钟快速搭建本地AI服务平台 【免费下载链接】LocalAI 项目地址: https://gitcode.com/gh_mirrors/loc/LocalAI 还在为云端AI服务的高昂费用和隐私担忧而烦恼吗&#xff1f;&#x1f914; LocalAI为您带来了革命性的本地AI解决方案&am…

作者头像 李华