c++--

堆是一种特殊的完全二叉树 数据结构,广泛用于优先队列 、堆排序 以及图算法 等场景。堆分为最大堆 (大顶堆)和最小堆(小顶堆),分别满足父节点值大于等于或小于等于子节点值的特性。

堆的存储与操作

堆通常使用数组存储,利用完全二叉树的性质:

  • 父节点索引:(i-1)/2

  • 左子节点索引:2*i+1

  • 右子节点索引:2*i+2

堆的核心操作包括:

  1. 上浮操作:用于插入新元素后调整堆。

  2. 下沉操作:用于移除堆顶元素后重新调整堆。

  3. 建堆操作 :将无序数组构建为堆,常用自底向上法,时间复杂度为O(n)。

相关推荐
-森屿安年-21 分钟前
按身高排序
c++·算法
(Charon)1 小时前
【C++面试】vector底层原理:扩容、拷贝移动与迭代器失效
c++·面试
朔北之忘 Clancy2 小时前
青少年软编等考七级题解目录
开发语言·c++·青少年编程·gesp·csp·信奥赛·noi
汉克老师2 小时前
GESP2026年9月认证C++七级( 第一部分选择题(8~15题)精讲
c++·gesp·小学生·学c++编程
Mr_Macallon2 小时前
C++回顾(基础)(01)
c语言·开发语言·c++·学习
如意猴3 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
朝朝辞暮i3 小时前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
汉克老师3 小时前
GESP2026年9月认证C++一级( 第三部分编程题(1、新龟兔赛跑))精讲
c++·gesp·小学生·学c++编程
沫璃染墨3 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++