c++--

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

堆的存储与操作

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

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

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

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

堆的核心操作包括:

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

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

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

相关推荐
迷途之人不知返2 小时前
lambda表达式
c++
@三十一Y2 小时前
C++:红黑树的实现
开发语言·c++
_wyt0012 小时前
拓扑排序:有向无环图的排队艺术
c++·拓扑排序·队列
皓月斯语2 小时前
B2118 验证子串
c++·题解
乐观勇敢坚强的老彭2 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
2301_777998343 小时前
C/C++:预处理详解
c语言·c++
t-think4 小时前
C++类和对象详解(一)
开发语言·c++
阿米亚波5 小时前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
随意起个昵称5 小时前
贪心模型-Johnson法则
c++·算法
蜡笔小马5 小时前
【保姆级教程】Windows 下 CGAL 6.2 + VS2022 全流程实战:从源码编译到项目集成(附避坑指南)
c++·cgal