Skip to content

Latest commit

 

History

History
28 lines (21 loc) · 1.15 KB

File metadata and controls

28 lines (21 loc) · 1.15 KB

  1. 二叉堆
  2. 二项堆
  3. 配对堆

  堆,有些时候又叫优先队列(此说法欠严谨),是一种常见的逻辑结构。

  名字反映了这种结构的两个特点:

  • 整体看,它是一种金字塔形堆叠结构,下层元素数量比上层多。

  • 纵向看,它由一条条有序列汇流而成,每个元素其实不关心其横向关系。

                 1                       1  1  1  1  1  1
             /       \                   |  |  |  |  |  |
          2             5         <=>    2  2  2  5  5  5
        /   \         /   \              |  |  |  |  |  |
      5       4      6     8             5  5  4  6  8  8
     / \     / \    / \   / \            |  |  |     |  |
    9   7       6        9   8           9  7  6     9  8

  因此,堆擅长回答的并不是“某个元素在哪里”,而是“当前最该弹出谁”。后面几节的区别,主要就在于如何维护这种汇流关系,以及是否愿意为合并操作专门优化结构。


返回 下一章 下一节