首页 > 其他分享 >堆

时间:2024-02-24 11:45:42浏览次数:12  
标签: maxHeap 堆化 int 复杂度 元素 节点

堆就像是山川的峰峦,它们层叠起伏、形态各异。
每一座山峰都有其高低之分,而最高的山峰总是最先映入眼帘。

8.1 堆

「堆 heap」是一种满足特定条件的完全二叉树,主要可分为图 8‑1 所示的两种类型。

‧「大顶堆 max heap」:任意节点的值 ≥ 其子节点的值。

‧「小顶堆 min heap」:任意节点的值 ≤ 其子节点的值。

堆作为完全二叉树的一个特例,具有以下特性。

  • ‧ 最底层节点靠左填充,其他层的节点都被填满。
  • ‧ 我们将二叉树的根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。
  • ‧ 对于大顶堆(小顶堆),堆顶元素(即根节点)的值分别是最大(最小)的。
    8.1.1 堆常用操作
    需要指出的是,许多编程语言提供的是「优先队列 priority queue」,这是一种抽象数据结构,定义为具有优
    先级排序的队列。

实际上,堆通常用作实现优先队列,大顶堆相当于元素按从大到小顺序出队的优先队列。从使用角度来看,
我们可以将“优先队列”和“堆”看作等价的数据结构。因此,本书对两者不做特别区分,统一使用“堆“来
命名。

堆的常用操作见表 8‑1 ,方法名需要根据编程语言来确定。

方法名 描述 时间复杂度

相关文章