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

一、出堆

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

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

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

二、建堆

向上调整建堆

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

向下调整建堆

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

节点越多的层越靠后

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

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

相关推荐
whn19774 分钟前
在sqllog中排查达梦阻塞会话
数据结构
哈哈很哈哈8 分钟前
逻辑回归Logistic Regression
算法·机器学习·逻辑回归
甄心爱学习14 分钟前
【极大似然估计/最大化后验】为什么逻辑回归要使用交叉熵损失函数
算法·机器学习·逻辑回归
01二进制代码漫游日记26 分钟前
C/C++中的内存区域划分
c语言·jvm·数据结构·学习
郝学胜-神的一滴28 分钟前
深度学习入门全解析:从核心概念到实战基础 | 技术研讨会精华总结
人工智能·python·深度学习·算法·cnn
梯度下降中38 分钟前
CNN原理精讲
人工智能·算法·机器学习
Ivanqhz41 分钟前
活跃范围重写(Live Range Rewriting)
开发语言·c++·后端·算法·rust
xiaoye-duck1 小时前
《算法题讲解指南:优选算法-链表》--51.两数相加,52.两两交换链表中的节点
数据结构·算法·链表
Cosolar1 小时前
阿里CoPaw进阶使用手册:从新手到高手的完整指南
人工智能·后端·算法
代码改善世界1 小时前
【数据结构】八大排序算法详解(C语言实现)|插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序
c语言·数据结构·排序算法