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

一、出堆

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

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

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

二、建堆

向上调整建堆

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

向下调整建堆

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

节点越多的层越靠后

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

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

相关推荐
All for pursuit.1 小时前
【二分查找-2】34.在排序数组中查找元素的第一个和最后一个位置
数据结构·c++·算法·leetcode
泯泷1 小时前
为什么 AI 会"失忆"?——读懂 Agent 的记忆系统(一)
人工智能·算法·agent
bro_Java6662 小时前
链表进阶2:双向链表的构建
java·数据结构·链表
需要8263 小时前
分布式 ID 生成:雪花算法、号段模式与时钟回拨
分布式·算法
垆边人似月.3 小时前
华为机考题:字符串分隔
算法·华为
CQU_JIAKE3 小时前
9.4【A】
算法
梦帮科技3 小时前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
CQU_JIAKE3 小时前
9.13[A]
算法
懿路向前3 小时前
【唤醒实战笔记】2026-09-29 | 智能体提示词迭代史(v1 → v8)
linux·笔记·算法
@陈小鱼4 小时前
基于CNN-Transformer的无袖带血压估计
人工智能·深度学习·神经网络·算法·cnn·transformer·血压