This commit is contained in:
krahets
2023-02-26 22:45:57 +08:00
parent c20bdb15ac
commit ccfe99d31c
56 changed files with 7768 additions and 85 deletions

View File

@ -18,7 +18,7 @@
<link rel="prev" href="../heap/">
<link rel="next" href="../../chapter_graph/graph/">
<link rel="next" href="../summary/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.11">
@ -364,6 +364,8 @@
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
@ -406,6 +408,20 @@
<li class="md-nav__item">
<a href="../../chapter_introduction/summary/" class="md-nav__link">
1.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
@ -1055,6 +1071,8 @@
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
@ -1165,6 +1183,20 @@
<li class="md-nav__item">
<a href="../summary/" class="md-nav__link">
8.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
@ -1196,6 +1228,8 @@
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
@ -1252,6 +1286,20 @@
<li class="md-nav__item">
<a href="../../chapter_graph/summary/" class="md-nav__link">
9.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
@ -1633,7 +1681,7 @@
<h3 id="_1">借助入堆方法实现<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<p>最直接地,考虑借助「元素入堆」方法,先建立一个空堆,<strong>再将列表元素依次入堆即可</strong></p>
<h3 id="_2">基于堆化操作实现<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h3>
<p>然而,<strong>存在一种更加高效的建堆方法</strong>。设结点数量为 <span class="arithmatex">\(n\)</span> ,我们先将列表所有元素原封不动添加进堆,<strong>然后迭代地对各个结点执行「从顶至底堆化」</strong>。当然,<strong>无需对叶结点执行堆化</strong>,因为其没有子结点。</p>
<p>然而,<strong>存在一种更加高效的建堆方法</strong>。设元素数量为 <span class="arithmatex">\(n\)</span> ,我们先将列表所有元素原封不动添加进堆,<strong>然后迭代地对各个结点执行「从顶至底堆化」</strong>。当然,<strong>无需对叶结点执行堆化</strong>,因为其没有子结点。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:10"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Java</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Python</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">JavaScript</label><label for="__tabbed_1_6">TypeScript</label><label for="__tabbed_1_7">C</label><label for="__tabbed_1_8">C#</label><label for="__tabbed_1_9">Swift</label><label for="__tabbed_1_10">Zig</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
@ -1767,7 +1815,7 @@
<div class="arithmatex">\[
T(h) = 2^0h + 2^1(h-1) + 2^2(h-2) + \cdots + 2^{(h-1)}\times1
\]</div>
<p><img alt="完美二叉树的各层结点数量" src="../heap.assets/heapify_operations_count.png" /></p>
<p><img alt="完美二叉树的各层结点数量" src="../build_heap.assets/heapify_operations_count.png" /></p>
<p align="center"> Fig. 完美二叉树的各层结点数量 </p>
<p>化简上式需要借助中学的数列知识,先对 <span class="arithmatex">\(T(h)\)</span> 乘以 <span class="arithmatex">\(2\)</span> ,易得</p>
@ -1883,13 +1931,13 @@ T(h) &amp; = 2 \frac{1 - 2^h}{1 - 2} - h \newline
<a href="../../chapter_graph/graph/" class="md-footer__link md-footer__link--next" aria-label="下一页: 9.1. &amp;nbsp; Graph" rel="next">
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.3. &amp;nbsp; 小结" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
下一页
</span>
9.1. &nbsp; Graph
8.3. &nbsp; 小结
</div>
</div>
<div class="md-footer__button md-icon">