c++--

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

堆的存储与操作

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

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

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

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

堆的核心操作包括:

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

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

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

相关推荐
努力努力再努力wz几秒前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
划破黑暗的第一缕曙光25 分钟前
[C++]:4.模板
c++·template·模板·函数模版·类模版
十五年专注C++开发29 分钟前
pybind11:一个跨C++和Python平台的编程库
开发语言·c++·python·pybind11
CodeYp201938 分钟前
第11讲:stack 和 queue
开发语言·c++·queue·stack
沫璃染墨1 小时前
《Qt从零入门系列(十五):Qt线程安全与锁机制详解——从QMutex到RAII与读写锁实战》
开发语言·c++·qt·安全·交互·线程·qt6.3
hetao17338371 小时前
2026-10-25 hetao1733837 的刷题记录
c++·算法
fqbqrr2 小时前
2610C++,UI复合技术在窗口中绘画字体图标
c++·ui
见叶之秋2 小时前
【C++】红与黑的边界:红黑树从插入到自检
数据结构·c++·算法·面试
程序猿编码2 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
kiracrimson3 小时前
string 容器:从 C 字符串到会自己扩容的类
开发语言·数据结构·c++·stl