堆是一种特殊的完全二叉树 数据结构,广泛用于优先队列 、堆排序 以及图算法 等场景。堆分为最大堆 (大顶堆)和最小堆(小顶堆),分别满足父节点值大于等于或小于等于子节点值的特性。
堆的存储与操作
堆通常使用数组存储,利用完全二叉树的性质:
-
父节点索引:(i-1)/2
-
左子节点索引:2*i+1
-
右子节点索引:2*i+2
堆的核心操作包括:
-
上浮操作:用于插入新元素后调整堆。
-
下沉操作:用于移除堆顶元素后重新调整堆。
-
建堆操作 :将无序数组构建为堆,常用自底向上法,时间复杂度为O(n)。