mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-24 02:21:30 +08:00
Use underline format for the technical terms (#1213)
* Use underline format for the technical terms * Bug fixes
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
# 堆
|
||||
|
||||
「堆 heap」是一种满足特定条件的完全二叉树,主要可分为两种类型,如下图所示。
|
||||
<u>堆(heap)</u>是一种满足特定条件的完全二叉树,主要可分为两种类型,如下图所示。
|
||||
|
||||
- 「小顶堆 min heap」:任意节点的值 $\leq$ 其子节点的值。
|
||||
- 「大顶堆 max heap」:任意节点的值 $\geq$ 其子节点的值。
|
||||
- <u>小顶堆(min heap)</u>:任意节点的值 $\leq$ 其子节点的值。
|
||||
- <u>大顶堆(max heap)</u>:任意节点的值 $\geq$ 其子节点的值。
|
||||
|
||||

|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
## 堆的常用操作
|
||||
|
||||
需要指出的是,许多编程语言提供的是「优先队列 priority queue」,这是一种抽象的数据结构,定义为具有优先级排序的队列。
|
||||
需要指出的是,许多编程语言提供的是<u>优先队列(priority queue)</u>,这是一种抽象的数据结构,定义为具有优先级排序的队列。
|
||||
|
||||
实际上,**堆通常用于实现优先队列,大顶堆相当于元素按从大到小的顺序出队的优先队列**。从使用角度来看,我们可以将“优先队列”和“堆”看作等价的数据结构。因此,本书对两者不做特别区分,统一称作“堆”。
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
|
||||
### 元素入堆
|
||||
|
||||
给定元素 `val` ,我们首先将其添加到堆底。添加之后,由于 `val` 可能大于堆中其他元素,堆的成立条件可能已被破坏,**因此需要修复从插入节点到根节点的路径上的各个节点**,这个操作被称为「堆化 heapify」。
|
||||
给定元素 `val` ,我们首先将其添加到堆底。添加之后,由于 `val` 可能大于堆中其他元素,堆的成立条件可能已被破坏,**因此需要修复从插入节点到根节点的路径上的各个节点**,这个操作被称为<u>堆化(heapify)</u>。
|
||||
|
||||
考虑从入堆节点开始,**从底至顶执行堆化**。如下图所示,我们比较插入节点与其父节点的值,如果插入节点更大,则将它们交换。然后继续执行此操作,从底至顶修复堆中的各个节点,直至越过根节点或遇到无须交换的节点时结束。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user