From 4839c234329c9365bd73668cb17b198e6345498d Mon Sep 17 00:00:00 2001 From: Yudong Jin Date: Sun, 8 Jan 2023 19:04:24 +0800 Subject: [PATCH] Remove heap.md for temporary. --- docs/chapter_heap/heap.md | 54 --------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 docs/chapter_heap/heap.md diff --git a/docs/chapter_heap/heap.md b/docs/chapter_heap/heap.md deleted file mode 100644 index b0151622..00000000 --- a/docs/chapter_heap/heap.md +++ /dev/null @@ -1,54 +0,0 @@ -# 堆 - -「堆 Heap」是一种特殊的树状数据结构,并且是一颗「完全二叉树」。堆主要分为两种: - -- 「大顶堆 Max Heap」,任意结点的值 $\geq$ 其子结点的值,因此根结点的值最大; -- 「小顶堆 Min Heap」,任意结点的值 $\leq$ 其子结点的值,因此根结点的值最小; - -(图) - -!!! tip "" - - 大顶堆和小顶堆的定义、性质、操作本质上是相同的,区别只是大顶堆在求最大值,小顶堆在求最小值。 - -## 堆常用操作 - -值得说明的是,多数编程语言提供的是「优先队列 Priority Queue」,其是一种抽象数据结构,**定义为具有出队优先级的队列**。 - -而恰好,堆的定义与优先队列的操作逻辑完全吻合,大顶堆就是一个元素从大到小出队的优先队列。从使用角度看,我们可以将「优先队列」和「堆」理解为等价的数据结构,下文将统一使用 “堆” 这个名称。 - -堆的常用操作见下表(方法命名以 Java 为例)。 - -

Table. 堆的常用操作

- -
- -| 方法 | 描述 | -| --------- | -------------------------------------------- | -| add() | 元素入堆 | -| poll() | 堆顶元素出堆 | -| peek() | 访问堆顶元素(大 / 小顶堆分别为最大 / 小值) | -| size() | 获取堆的元素数量 | -| isEmpty() | 判断堆是否为空 | - -
- -```java - -``` - -## 堆的实现 - -!!! tip - - 下文使用「大顶堆」来举例,「小顶堆」的用法与实现可以简单地将所有 $>$ ($<$) 替换为 $<$ ($>$) 即可。 - -我们一般使用「数组」来存储「堆」,这是因为完全二叉树非常适合用数组来表示(在二叉树章节有详细解释)。 - - - -## 堆常见应用 - -- 优先队列。 -- 堆排序。 -- 获取数据 Top K 大(小)元素。