ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构:堆

2021-11-08 23:59:18  阅读:135  来源: 互联网

标签:数据结构 add 二叉树 heap 小顶 poll 节点


堆 是一种基于[完全二叉树]的数据结构,可使用数组实现。以堆为原理的排序算法称为[堆排序],基于堆实现的数据结构为[优先队列]。堆分为[大顶堆]和[小顶堆],大(小)顶堆:任意节点的值不大于(小于)其父节点的值。

完全二叉树定义: 设二叉树深度为 kk ,若二叉树除第 kk 层外的其它各层(第 11 至 k-1k−1 层)的节点达到最大个数,且处于第 kk 层的节点都连续集中在最左边,则称此二叉树为完全二叉树。

 如下图所示,为包含 1, 4, 2, 6, 8 元素的小顶堆。将堆(完全二叉树)中的结点按层编号,即可映射到右边的数组存储形式。

Picture9.png

 通过使用「优先队列」的「压入 push()」和「弹出 pop()」操作,即可完成堆排序,实现代码如下:

//初始化小顶堆
Queue<Integer> heap = new PriorityQueue<>();

//元素入堆
heap.add(1);
heap.add(4);
heap.add(2);
heap.add(6);
heap.add(8);

//元素出堆(从小到大)
heap.poll(); // ->1
heap.poll(); // ->4
heap.poll(); // ->2
heap.poll(); // ->6
heap.poll(); // ->8

标签:数据结构,add,二叉树,heap,小顶,poll,节点
来源: https://blog.csdn.net/m0_59499084/article/details/121219092

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有