c++--

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

堆的存储与操作

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

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

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

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

堆的核心操作包括:

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

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

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

相关推荐
xcyxiner9 分钟前
ubuntu下 cmake初始化脚本 以及 qt依赖
c++·qt
周末也要写八哥9 分钟前
Visual C++6.0下载安装流程及PDF学习手册资源
c++·学习·pdf
熬夜敲代码的猫27 分钟前
AVL树(C++详解版)
数据结构·c++·算法
思麟呀28 分钟前
C++工业级日志项目(七)日志器核心
linux·开发语言·c++·windows
郝学胜_神的一滴32 分钟前
Qt 高级开发 019:从零定制登录窗口按钮、Logo 样式与交互悬浮效果
c++·qt
lcj251134 分钟前
vector的基本使用 + 手搓成员变量 size capacity begin end operator[] reserve扩容 拷贝构造 赋值析构
开发语言·c++·笔记·面试
liulilittle1 小时前
C++ do_div 宏
c++
-To be number.wan1 小时前
算法日记 | STL-MAP
c++·算法
楼田莉子1 小时前
C++20新特性:Range库
开发语言·c++·后端·学习·c++20
字节高级特工1 小时前
【Linux】深入理解C语言命令行参数与环境变量
linux·c++·人工智能·后端