From c74480c9845cfb06343ac658842e87c93a752a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=96=8C?= <48972620+xb534@users.noreply.github.com> Date: Sat, 11 Feb 2023 23:01:36 +0800 Subject: [PATCH] Update heap.md (#361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正“元素入堆的时间复杂度”为lgn --- docs/chapter_heap/heap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/chapter_heap/heap.md b/docs/chapter_heap/heap.md index 286f99f74..20cf88a2e 100644 --- a/docs/chapter_heap/heap.md +++ b/docs/chapter_heap/heap.md @@ -643,7 +643,7 @@ comments: true ### 输入数据并建堆 * -如果我们想要直接输入一个列表并将其建堆,那么该怎么做呢?最直接地,考虑使用「元素入堆」方法,将列表元素依次入堆。元素入堆的时间复杂度为 $O(n)$ ,而平均长度为 $\frac{n}{2}$ ,因此该方法的总体时间复杂度为 $O(n \log n)$ 。 +如果我们想要直接输入一个列表并将其建堆,那么该怎么做呢?最直接地,考虑使用「元素入堆」方法,将列表元素依次入堆。元素入堆的时间复杂度为 $O(\log n)$ ,而平均长度为 $\frac{n}{2}$ ,因此该方法的总体时间复杂度为 $O(n \log n)$ 。 然而,存在一种更加优雅的建堆方法。设结点数量为 $n$ ,我们先将列表所有元素原封不动添加进堆,**然后迭代地对各个结点执行「从顶至底堆化」**。当然,**无需对叶结点执行堆化**,因为其没有子结点。