数据结构之---堆(2)

一、出堆

出堆是指将堆顶数据出堆。出堆完成后要保证剩余数据还是满足原来堆的性质。所以我们把堆顶数据和堆底最后一个数据交换,取出新堆底数据,之后通过向下调整算法将剩下的数据重新排列成一个堆。

大堆经过出堆操作得出的数据是升序的

小堆经过出堆操作得出的数据是降序的

二、建堆

向上调整建堆

将新数据插入堆底,然后向上调整直到满足堆的结构

向下调整建堆

要向下调整,就要确保该数据下面的数据已经是一个堆了。我们从堆底数据开始排,比较堆底数据和它父节点的数据。一轮完成后下面几层都是堆的顺序了。调整完成后得到新的父子节点,在继续将新的父节点向下调整。

节点越多的层越靠后

向下调整算法节点多的层调整的次数少

向上调整算法节点多的层调整的次数还多,所以在时间复杂度上向下调整算法是优于向上调整算法的。

相关推荐
2401_8933266213 小时前
力扣133.克隆图
算法·leetcode·职场和发展
zxsz_com_cn13 小时前
设备预测性维护系统实战指南:架构、算法与落地路径
算法·架构
爪哇部落算法小助手13 小时前
爪哇周赛 Round 3
数据结构·c++·算法
吃着火锅x唱着歌13 小时前
LeetCode 3623.统计梯形的数目 I
算法·leetcode·职场和发展
迷途之人不知返13 小时前
二叉树的链式结构
数据结构
不会c嘎嘎13 小时前
【数据结构】红黑树详解:从原理到C++实现
开发语言·数据结构
吃着火锅x唱着歌13 小时前
LeetCode 2364.统计坏数对的数目
数据结构·算法·leetcode
qq_3363139313 小时前
java基础-set类集合进阶
java·算法
kyle~13 小时前
数据结构---堆(Heap)
服务器·开发语言·数据结构·c++
嵌入式老牛13 小时前
第13章 图像处理之Harris角点检测算法(二)
图像处理·opencv·算法·计算机视觉