33 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 堆
「堆 Heap」是一种特殊的树状数据结构并且是一颗「完全二叉树」。堆主要分为两种
- 「大顶堆 Max Heap」任意父结点的值 > 其子结点的值,因此根结点的值最大;
- 「小顶堆 Min Heap」任意父结点的值 < 其子结点的值因此根结点的值最小
!!! tip ""
大顶堆和小顶堆的定义性质操作本质上是一样的区别只是大顶堆在求最大值小顶堆在求最小值在下文中我们将统一用大顶堆来举例,「小顶堆的用法与实现可以简单地将所有 $>$ ($<$) 替换为 $<$ ($>$) 即可。
## 堆常用操作
堆的初始化。
获取堆顶元素。
添加与删除元素。
## 堆的实现
在二叉树章节中,我们讲过二叉树的数组表示方法,并且提到完全二叉树非常适合用数组来表示,因此我们一般使用「数组」来存储「堆」。
## 堆常见应用
- 优先队列。
- 堆排序。
- 获取数据 Top K 大(小)元素。