mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-31 04:17:14 +00:00
build
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 8.1. 堆
|
||||
# 8.1 堆
|
||||
|
||||
「堆 Heap」是一种满足特定条件的完全二叉树,可分为两种类型:
|
||||
|
||||
@@ -19,7 +19,7 @@ comments: true
|
||||
- 我们将二叉树的根节点称为「堆顶」,将底层最靠右的节点称为「堆底」。
|
||||
- 对于大顶堆(小顶堆),堆顶元素(即根节点)的值分别是最大(最小)的。
|
||||
|
||||
## 8.1.1. 堆常用操作
|
||||
## 8.1.1 堆常用操作
|
||||
|
||||
需要指出的是,许多编程语言提供的是「优先队列 Priority Queue」,这是一种抽象数据结构,定义为具有优先级排序的队列。
|
||||
|
||||
@@ -320,7 +320,7 @@ comments: true
|
||||
|
||||
```
|
||||
|
||||
## 8.1.2. 堆的实现
|
||||
## 8.1.2 堆的实现
|
||||
|
||||
下文实现的是大顶堆。若要将其转换为小顶堆,只需将所有大小逻辑判断取逆(例如,将 $\geq$ 替换为 $\leq$ )。感兴趣的读者可以自行实现。
|
||||
|
||||
@@ -1565,7 +1565,7 @@ comments: true
|
||||
}
|
||||
```
|
||||
|
||||
## 8.1.3. 堆常见应用
|
||||
## 8.1.3 堆常见应用
|
||||
|
||||
- **优先队列**:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 $O(\log n)$ ,而建队操作为 $O(n)$ ,这些操作都非常高效。
|
||||
- **堆排序**:给定一组数据,我们可以用它们建立一个堆,然后不断地执行元素出堆操作,从而得到有序数据。然而,我们通常会使用一种更优雅的方式实现堆排序,详见后续的堆排序章节。
|
||||
|
||||
Reference in New Issue
Block a user