mirror of
https://github.com/krahets/hello-algo.git
synced 2025-12-16 03:59:18 +08:00
Modify 。** to **。 for better visualization.
This commit is contained in:
32
docs/chapter_heap/heap.md
Normal file
32
docs/chapter_heap/heap.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# 堆
|
||||
|
||||
「堆 Heap」是一种特殊的树状数据结构,并且是一颗「完全二叉树」。堆主要分为两种:
|
||||
|
||||
- 「大顶堆 Max Heap」,任意父结点的值 > 其子结点的值,因此根结点的值最大;
|
||||
- 「小顶堆 Min Heap」,任意父结点的值 < 其子结点的值,因此根结点的值最小;
|
||||
|
||||
(图)
|
||||
|
||||
!!! tip ""
|
||||
|
||||
大顶堆和小顶堆的定义、性质、操作本质上是一样的。区别只是大顶堆在求最大值,小顶堆在求最小值。在下文中,我们将统一用「大顶堆」来举例,「小顶堆」的用法与实现可以简单地将所有 $>$ ($<$) 替换为 $<$ ($>$) 即可。
|
||||
|
||||
## 堆常用操作
|
||||
|
||||
堆的初始化。
|
||||
|
||||
获取堆顶元素。
|
||||
|
||||
添加与删除元素。
|
||||
|
||||
## 堆的实现
|
||||
|
||||
在二叉树章节中,我们讲过二叉树的数组表示方法,并且提到完全二叉树非常适合用数组来表示,因此我们一般使用「数组」来存储「堆」。
|
||||
|
||||
|
||||
|
||||
## 堆常见应用
|
||||
|
||||
- 优先队列。
|
||||
- 堆排序。
|
||||
- 获取数据 Top K 大(小)元素。
|
||||
Reference in New Issue
Block a user