Skip to content

Latest commit

 

History

History
15 lines (11 loc) · 1.18 KB

什么是堆?如何维护堆.md

File metadata and controls

15 lines (11 loc) · 1.18 KB

堆是一种特殊的树形数据结构,通常用于实现优先队列。堆分为最大堆(Max Heap)和最小堆(Min Heap),其中最大堆满足父节点的值大于等于子节点的值,最小堆满足父节点的值小于等于子节点的值。

维护堆的主要操作有两个:插入和删除。在插入一个新元素时,需要保持堆的性质不变;在删除堆顶元素时,同样需要保持堆的性质不变。以下是维护堆的具体操作:

  1. 插入元素:
    • 将新元素插入到堆的末尾。
    • 从新元素开始向上调整(最大堆时向下调整),直至满足堆的性质。
  2. 删除堆顶元素:
    • 将堆顶元素(根节点)与堆的最后一个元素交换。
    • 删除最后一个元素,即原来的堆顶元素。
    • 从根节点开始向下调整(最大堆时向上调整),直至满足堆的性质。

在维护堆时,通常会使用“上浮”和“下沉”的方式进行调整,保持堆的性质。具体来说,插入时新元素上浮,删除堆顶元素后,末尾元素下沉。这样可以确保堆的顺序关系不被破坏。

维护堆的时间复杂度为 O(log n),其中 n 为堆的大小。