This commit is contained in:
krahets
2023-04-17 18:24:27 +08:00
parent f76b7ed47c
commit ca2ccfea0b
70 changed files with 12269 additions and 13539 deletions

View File

@@ -25,7 +25,7 @@
<title>8.2.   建堆操作 * - Hello 算法</title>
<title>9.2.   建堆操作 * - Hello 算法</title>
@@ -79,7 +79,7 @@
<div data-md-component="skip">
<a href="#82" class="md-skip">
<a href="#92" class="md-skip">
跳转至
</a>
@@ -113,7 +113,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</span>
</div>
@@ -441,8 +441,6 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
@@ -504,23 +502,9 @@
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
2.4. &nbsp; 权衡时间与空间
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
2.5. &nbsp; 小结
2.4. &nbsp; 小结
</a>
</li>
@@ -847,21 +831,17 @@
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -871,36 +851,8 @@
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
6.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
6.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
6.3. &nbsp; 小结
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
6.1. &nbsp; 二分查找
</a>
</li>
@@ -938,21 +890,108 @@
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
7.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
7.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
7.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -963,7 +1002,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree/" class="md-nav__link">
7.1. &nbsp; 二叉树
8.1. &nbsp; 二叉树
</a>
</li>
@@ -977,7 +1016,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree_traversal/" class="md-nav__link">
7.2. &nbsp; 二叉树遍历
8.2. &nbsp; 二叉树遍历
</a>
</li>
@@ -991,7 +1030,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_search_tree/" class="md-nav__link">
7.3. &nbsp; 二叉搜索树
8.3. &nbsp; 二叉搜索树
</a>
</li>
@@ -1005,7 +1044,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/avl_tree/" class="md-nav__link">
7.4. &nbsp; AVL 树 *
8.4. &nbsp; AVL 树 *
</a>
</li>
@@ -1019,7 +1058,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/summary/" class="md-nav__link">
7.5. &nbsp; 小结
8.5. &nbsp; 小结
</a>
</li>
@@ -1049,7 +1088,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
@@ -1061,15 +1100,15 @@
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_9">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1080,7 +1119,7 @@
<li class="md-nav__item">
<a href="../heap/" class="md-nav__link">
8.1. &nbsp;
9.1. &nbsp;
</a>
</li>
@@ -1103,12 +1142,12 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</a>
@@ -1127,11 +1166,11 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#821" class="md-nav__link">
8.2.1. &nbsp; 两种建堆方法
<a href="#921" class="md-nav__link">
9.2.1. &nbsp; 两种建堆方法
</a>
<nav class="md-nav" aria-label="8.2.1. &nbsp; 两种建堆方法">
<nav class="md-nav" aria-label="9.2.1. &nbsp; 两种建堆方法">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -1154,8 +1193,8 @@
</li>
<li class="md-nav__item">
<a href="#822" class="md-nav__link">
8.2.2. &nbsp; 复杂度分析
<a href="#922" class="md-nav__link">
9.2.2. &nbsp; 复杂度分析
</a>
</li>
@@ -1176,110 +1215,7 @@
<li class="md-nav__item">
<a href="../summary/" class="md-nav__link">
8.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_graph/graph/" class="md-nav__link">
9.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
9.2. &nbsp; 图基础操作
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
9.3. &nbsp; 图的遍历
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/summary/" class="md-nav__link">
9.4. &nbsp; 小结
9.3. &nbsp; 小结
</a>
</li>
@@ -1322,14 +1258,14 @@
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1339,8 +1275,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
10.1. &nbsp; 线性查找
<a href="../../chapter_graph/graph/" class="md-nav__link">
10.1. &nbsp;
</a>
</li>
@@ -1353,8 +1289,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
10.2. &nbsp; 二分查找
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
10.2. &nbsp; 图基础操作
</a>
</li>
@@ -1367,8 +1303,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
10.3. &nbsp; 哈希查找
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
10.3. &nbsp; 图的遍历
</a>
</li>
@@ -1381,7 +1317,7 @@
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
<a href="../../chapter_graph/summary/" class="md-nav__link">
10.4. &nbsp; 小结
</a>
</li>
@@ -1523,7 +1459,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
11.6. &nbsp; 桶排序New
11.6. &nbsp; 桶排序
</a>
</li>
@@ -1537,7 +1473,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
11.7. &nbsp; 计数排序New
11.7. &nbsp; 计数排序
</a>
</li>
@@ -1551,7 +1487,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
11.8. &nbsp; 基数排序New
11.8. &nbsp; 基数排序
</a>
</li>
@@ -1599,17 +1535,21 @@
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1619,8 +1559,36 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
12.1. &nbsp; 回溯算法New
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
12.1. &nbsp; 搜索算法New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
12.2. &nbsp; 哈希优化策略
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
12.3. &nbsp; 小结
</a>
</li>
@@ -1654,19 +1622,17 @@
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1676,22 +1642,8 @@
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
13.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
13.2. &nbsp; 一起参与创作
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
13.1. &nbsp; 回溯算法New
</a>
</li>
@@ -1724,6 +1676,77 @@
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
14. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
14. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
14.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
14.2. &nbsp; 一起参与创作
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
@@ -1736,8 +1759,8 @@
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
参考文献
</label>
@@ -1778,11 +1801,11 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#821" class="md-nav__link">
8.2.1. &nbsp; 两种建堆方法
<a href="#921" class="md-nav__link">
9.2.1. &nbsp; 两种建堆方法
</a>
<nav class="md-nav" aria-label="8.2.1. &nbsp; 两种建堆方法">
<nav class="md-nav" aria-label="9.2.1. &nbsp; 两种建堆方法">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -1805,8 +1828,8 @@
</li>
<li class="md-nav__item">
<a href="#822" class="md-nav__link">
8.2.2. &nbsp; 复杂度分析
<a href="#922" class="md-nav__link">
9.2.2. &nbsp; 复杂度分析
</a>
</li>
@@ -1834,9 +1857,9 @@
<h1 id="82">8.2. &nbsp; 建堆操作 *<a class="headerlink" href="#82" title="Permanent link">&para;</a></h1>
<h1 id="92">9.2. &nbsp; 建堆操作 *<a class="headerlink" href="#92" title="Permanent link">&para;</a></h1>
<p>如果我们想要根据输入列表生成一个堆,这个过程被称为「建堆」。</p>
<h2 id="821">8.2.1. &nbsp; 两种建堆方法<a class="headerlink" href="#821" title="Permanent link">&para;</a></h2>
<h2 id="921">9.2.1. &nbsp; 两种建堆方法<a class="headerlink" href="#921" title="Permanent link">&para;</a></h2>
<h3 id="_1">借助入堆方法实现<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<p>最直接的方法是借助“元素入堆操作”实现,首先创建一个空堆,然后将列表元素依次添加到堆中。</p>
<p>设元素数量为 <span class="arithmatex">\(n\)</span> ,则最后一个元素入堆的时间复杂度为 <span class="arithmatex">\(O(\log n)\)</span> 。在依次添加元素时,堆的平均长度为 <span class="arithmatex">\(\frac{n}{2}\)</span> ,因此该方法的总体时间复杂度为 <span class="arithmatex">\(O(n \log n)\)</span></p>
@@ -1963,7 +1986,7 @@
</div>
</div>
</div>
<h2 id="822">8.2.2. &nbsp; 复杂度分析<a class="headerlink" href="#822" title="Permanent link">&para;</a></h2>
<h2 id="922">9.2.2. &nbsp; 复杂度分析<a class="headerlink" href="#922" title="Permanent link">&para;</a></h2>
<p>为什么第二种建堆方法的时间复杂度是 <span class="arithmatex">\(O(n)\)</span> ?我们来展开推算一下。</p>
<ul>
<li>完全二叉树中,设节点总数为 <span class="arithmatex">\(n\)</span> ,则叶节点数量为 <span class="arithmatex">\((n + 1) / 2\)</span> ,其中 <span class="arithmatex">\(/\)</span> 为向下整除。因此,在排除叶节点后,需要堆化的节点数量为 <span class="arithmatex">\((n - 1)/2\)</span> ,复杂度为 <span class="arithmatex">\(O(n)\)</span> </li>
@@ -2075,7 +2098,7 @@ T(h) &amp; = 2 \frac{1 - 2^h}{1 - 2} - h \newline
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../heap/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.1. &amp;nbsp; 堆" rel="prev">
<a href="../heap/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 9.1. &amp;nbsp; 堆" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
@@ -2084,20 +2107,20 @@ T(h) &amp; = 2 \frac{1 - 2^h}{1 - 2} - h \newline
上一页
</span>
<div class="md-ellipsis">
8.1. &nbsp;
9.1. &nbsp;
</div>
</div>
</a>
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.3. &amp;nbsp; 小结" rel="next">
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 9.3. &amp;nbsp; 小结" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
8.3. &nbsp; 小结
9.3. &nbsp; 小结
</div>
</div>
<div class="md-footer__button md-icon">

View File

@@ -25,7 +25,7 @@
<title>8.1.   堆 - Hello 算法</title>
<title>9.1.   堆 - Hello 算法</title>
@@ -79,7 +79,7 @@
<div data-md-component="skip">
<a href="#81" class="md-skip">
<a href="#91" class="md-skip">
跳转至
</a>
@@ -113,7 +113,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
8.1. &nbsp;
9.1. &nbsp;
</span>
</div>
@@ -441,8 +441,6 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
@@ -504,23 +502,9 @@
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
2.4. &nbsp; 权衡时间与空间
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
2.5. &nbsp; 小结
2.4. &nbsp; 小结
</a>
</li>
@@ -847,21 +831,17 @@
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -871,36 +851,8 @@
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
6.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
6.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
6.3. &nbsp; 小结
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
6.1. &nbsp; 二分查找
</a>
</li>
@@ -938,21 +890,108 @@
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
7.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
7.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
7.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -963,7 +1002,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree/" class="md-nav__link">
7.1. &nbsp; 二叉树
8.1. &nbsp; 二叉树
</a>
</li>
@@ -977,7 +1016,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree_traversal/" class="md-nav__link">
7.2. &nbsp; 二叉树遍历
8.2. &nbsp; 二叉树遍历
</a>
</li>
@@ -991,7 +1030,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_search_tree/" class="md-nav__link">
7.3. &nbsp; 二叉搜索树
8.3. &nbsp; 二叉搜索树
</a>
</li>
@@ -1005,7 +1044,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/avl_tree/" class="md-nav__link">
7.4. &nbsp; AVL 树 *
8.4. &nbsp; AVL 树 *
</a>
</li>
@@ -1019,7 +1058,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/summary/" class="md-nav__link">
7.5. &nbsp; 小结
8.5. &nbsp; 小结
</a>
</li>
@@ -1049,7 +1088,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
@@ -1061,15 +1100,15 @@
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_9">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1089,12 +1128,12 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
8.1. &nbsp;
9.1. &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
8.1. &nbsp;
9.1. &nbsp;
</a>
@@ -1113,18 +1152,18 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#811" class="md-nav__link">
8.1.1. &nbsp; 堆常用操作
<a href="#911" class="md-nav__link">
9.1.1. &nbsp; 堆常用操作
</a>
</li>
<li class="md-nav__item">
<a href="#812" class="md-nav__link">
8.1.2. &nbsp; 堆的实现
<a href="#912" class="md-nav__link">
9.1.2. &nbsp; 堆的实现
</a>
<nav class="md-nav" aria-label="8.1.2. &nbsp; 堆的实现">
<nav class="md-nav" aria-label="9.1.2. &nbsp; 堆的实现">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -1161,8 +1200,8 @@
</li>
<li class="md-nav__item">
<a href="#813" class="md-nav__link">
8.1.3. &nbsp; 堆常见应用
<a href="#913" class="md-nav__link">
9.1.3. &nbsp; 堆常见应用
</a>
</li>
@@ -1183,7 +1222,7 @@
<li class="md-nav__item">
<a href="../build_heap/" class="md-nav__link">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</a>
</li>
@@ -1197,110 +1236,7 @@
<li class="md-nav__item">
<a href="../summary/" class="md-nav__link">
8.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_graph/graph/" class="md-nav__link">
9.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
9.2. &nbsp; 图基础操作
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
9.3. &nbsp; 图的遍历
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/summary/" class="md-nav__link">
9.4. &nbsp; 小结
9.3. &nbsp; 小结
</a>
</li>
@@ -1343,14 +1279,14 @@
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1360,8 +1296,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
10.1. &nbsp; 线性查找
<a href="../../chapter_graph/graph/" class="md-nav__link">
10.1. &nbsp;
</a>
</li>
@@ -1374,8 +1310,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
10.2. &nbsp; 二分查找
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
10.2. &nbsp; 图基础操作
</a>
</li>
@@ -1388,8 +1324,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
10.3. &nbsp; 哈希查找
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
10.3. &nbsp; 图的遍历
</a>
</li>
@@ -1402,7 +1338,7 @@
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
<a href="../../chapter_graph/summary/" class="md-nav__link">
10.4. &nbsp; 小结
</a>
</li>
@@ -1544,7 +1480,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
11.6. &nbsp; 桶排序New
11.6. &nbsp; 桶排序
</a>
</li>
@@ -1558,7 +1494,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
11.7. &nbsp; 计数排序New
11.7. &nbsp; 计数排序
</a>
</li>
@@ -1572,7 +1508,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
11.8. &nbsp; 基数排序New
11.8. &nbsp; 基数排序
</a>
</li>
@@ -1620,17 +1556,21 @@
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1640,8 +1580,36 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
12.1. &nbsp; 回溯算法New
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
12.1. &nbsp; 搜索算法New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
12.2. &nbsp; 哈希优化策略
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
12.3. &nbsp; 小结
</a>
</li>
@@ -1675,19 +1643,17 @@
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1697,22 +1663,8 @@
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
13.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
13.2. &nbsp; 一起参与创作
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
13.1. &nbsp; 回溯算法New
</a>
</li>
@@ -1745,6 +1697,77 @@
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
14. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
14. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
14.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
14.2. &nbsp; 一起参与创作
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
@@ -1757,8 +1780,8 @@
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
参考文献
</label>
@@ -1799,18 +1822,18 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#811" class="md-nav__link">
8.1.1. &nbsp; 堆常用操作
<a href="#911" class="md-nav__link">
9.1.1. &nbsp; 堆常用操作
</a>
</li>
<li class="md-nav__item">
<a href="#812" class="md-nav__link">
8.1.2. &nbsp; 堆的实现
<a href="#912" class="md-nav__link">
9.1.2. &nbsp; 堆的实现
</a>
<nav class="md-nav" aria-label="8.1.2. &nbsp; 堆的实现">
<nav class="md-nav" aria-label="9.1.2. &nbsp; 堆的实现">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -1847,8 +1870,8 @@
</li>
<li class="md-nav__item">
<a href="#813" class="md-nav__link">
8.1.3. &nbsp; 堆常见应用
<a href="#913" class="md-nav__link">
9.1.3. &nbsp; 堆常见应用
</a>
</li>
@@ -1876,7 +1899,7 @@
<h1 id="81">8.1. &nbsp;<a class="headerlink" href="#81" title="Permanent link">&para;</a></h1>
<h1 id="91">9.1. &nbsp;<a class="headerlink" href="#91" title="Permanent link">&para;</a></h1>
<p>「堆 Heap」是一种满足特定条件的完全二叉树可分为两种类型</p>
<ul>
<li>「大顶堆 Max Heap」任意节点的值 <span class="arithmatex">\(\geq\)</span> 其子节点的值;</li>
@@ -1891,7 +1914,7 @@
<li>我们将二叉树的根节点称为「堆顶」,将底层最靠右的节点称为「堆底」。</li>
<li>对于大顶堆(小顶堆),堆顶元素(即根节点)的值分别是最大(最小)的。</li>
</ul>
<h2 id="811">8.1.1. &nbsp; 堆常用操作<a class="headerlink" href="#811" title="Permanent link">&para;</a></h2>
<h2 id="911">9.1.1. &nbsp; 堆常用操作<a class="headerlink" href="#911" title="Permanent link">&para;</a></h2>
<p>需要指出的是,许多编程语言提供的是「优先队列 Priority Queue」这是一种抽象数据结构定义为具有优先级排序的队列。</p>
<p>实际上,<strong>堆通常用作实现优先队列,大顶堆相当于元素按从大到小顺序出队的优先队列</strong>。从使用角度来看,我们可以将「优先队列」和「堆」看作等价的数据结构。因此,本书对两者不做特别区分,统一使用「堆」来命名。</p>
<p>堆的常用操作见下表,方法名需要根据编程语言来确定。</p>
@@ -2184,7 +2207,7 @@
</div>
</div>
</div>
<h2 id="812">8.1.2. &nbsp; 堆的实现<a class="headerlink" href="#812" title="Permanent link">&para;</a></h2>
<h2 id="912">9.1.2. &nbsp; 堆的实现<a class="headerlink" href="#912" title="Permanent link">&para;</a></h2>
<p>下文实现的是大顶堆。若要将其转换为小顶堆,只需将所有大小逻辑判断取逆(例如,将 <span class="arithmatex">\(\geq\)</span> 替换为 <span class="arithmatex">\(\leq\)</span> )。感兴趣的读者可以自行实现。</p>
<h3 id="_1">堆的存储与表示<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<p>我们在二叉树章节中学习到,完全二叉树非常适合用数组来表示。由于堆正是一种完全二叉树,<strong>我们将采用数组来存储堆</strong></p>
@@ -3080,7 +3103,7 @@
</div>
</div>
</div>
<h2 id="813">8.1.3. &nbsp; 堆常见应用<a class="headerlink" href="#813" title="Permanent link">&para;</a></h2>
<h2 id="913">9.1.3. &nbsp; 堆常见应用<a class="headerlink" href="#913" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>优先队列</strong>:堆通常作为实现优先队列的首选数据结构,其入队和出队操作的时间复杂度均为 <span class="arithmatex">\(O(\log n)\)</span> ,而建队操作为 <span class="arithmatex">\(O(n)\)</span> ,这些操作都非常高效。</li>
<li><strong>堆排序</strong>:给定一组数据,我们可以用它们建立一个堆,然后依次将所有元素弹出,从而得到一个有序序列。当然,堆排序的实现方法并不需要弹出元素,而是每轮将堆顶元素交换至数组尾部并缩小堆的长度。</li>
@@ -3163,7 +3186,7 @@
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../../chapter_tree/summary/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.5. &amp;nbsp; 小结" rel="prev">
<a href="../../chapter_tree/summary/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.5. &amp;nbsp; 小结" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
@@ -3172,20 +3195,20 @@
上一页
</span>
<div class="md-ellipsis">
7.5. &nbsp; 小结
8.5. &nbsp; 小结
</div>
</div>
</a>
<a href="../build_heap/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.2. &amp;nbsp; 建堆操作 *" rel="next">
<a href="../build_heap/" class="md-footer__link md-footer__link--next" aria-label="下一页: 9.2. &amp;nbsp; 建堆操作 *" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</div>
</div>
<div class="md-footer__button md-icon">

View File

@@ -25,7 +25,7 @@
<title>8.3.   小结 - Hello 算法</title>
<title>9.3.   小结 - Hello 算法</title>
@@ -79,7 +79,7 @@
<div data-md-component="skip">
<a href="#83" class="md-skip">
<a href="#93" class="md-skip">
跳转至
</a>
@@ -113,7 +113,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
8.3. &nbsp; 小结
9.3. &nbsp; 小结
</span>
</div>
@@ -441,8 +441,6 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
@@ -504,23 +502,9 @@
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
2.4. &nbsp; 权衡时间与空间
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
2.5. &nbsp; 小结
2.4. &nbsp; 小结
</a>
</li>
@@ -847,21 +831,17 @@
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
6. &nbsp; &nbsp; 散列表
6. &nbsp; &nbsp; 二分查找
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -871,36 +851,8 @@
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
6.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
6.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
6.3. &nbsp; 小结
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
6.1. &nbsp; 二分查找
</a>
</li>
@@ -938,21 +890,108 @@
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
7. &nbsp; &nbsp;
7. &nbsp; &nbsp; 散列表
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
7.1. &nbsp; 哈希表
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
7.2. &nbsp; 哈希冲突处理
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
7.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -963,7 +1002,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree/" class="md-nav__link">
7.1. &nbsp; 二叉树
8.1. &nbsp; 二叉树
</a>
</li>
@@ -977,7 +1016,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree_traversal/" class="md-nav__link">
7.2. &nbsp; 二叉树遍历
8.2. &nbsp; 二叉树遍历
</a>
</li>
@@ -991,7 +1030,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/binary_search_tree/" class="md-nav__link">
7.3. &nbsp; 二叉搜索树
8.3. &nbsp; 二叉搜索树
</a>
</li>
@@ -1005,7 +1044,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/avl_tree/" class="md-nav__link">
7.4. &nbsp; AVL 树 *
8.4. &nbsp; AVL 树 *
</a>
</li>
@@ -1019,7 +1058,7 @@
<li class="md-nav__item">
<a href="../../chapter_tree/summary/" class="md-nav__link">
7.5. &nbsp; 小结
8.5. &nbsp; 小结
</a>
</li>
@@ -1049,7 +1088,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
@@ -1061,15 +1100,15 @@
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
8. &nbsp; &nbsp;
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_9">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1080,7 +1119,7 @@
<li class="md-nav__item">
<a href="../heap/" class="md-nav__link">
8.1. &nbsp;
9.1. &nbsp;
</a>
</li>
@@ -1094,7 +1133,7 @@
<li class="md-nav__item">
<a href="../build_heap/" class="md-nav__link">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</a>
</li>
@@ -1117,7 +1156,7 @@
<a href="./" class="md-nav__link md-nav__link--active">
8.3. &nbsp; 小结
9.3. &nbsp; 小结
</a>
</li>
@@ -1141,109 +1180,6 @@
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
9. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_graph/graph/" class="md-nav__link">
9.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
9.2. &nbsp; 图基础操作
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
9.3. &nbsp; 图的遍历
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/summary/" class="md-nav__link">
9.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
@@ -1264,14 +1200,14 @@
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
10. &nbsp; &nbsp; 查找算法
10. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1281,8 +1217,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
10.1. &nbsp; 线性查找
<a href="../../chapter_graph/graph/" class="md-nav__link">
10.1. &nbsp;
</a>
</li>
@@ -1295,8 +1231,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
10.2. &nbsp; 二分查找
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
10.2. &nbsp; 图基础操作
</a>
</li>
@@ -1309,8 +1245,8 @@
<li class="md-nav__item">
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
10.3. &nbsp; 哈希查找
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
10.3. &nbsp; 图的遍历
</a>
</li>
@@ -1323,7 +1259,7 @@
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
<a href="../../chapter_graph/summary/" class="md-nav__link">
10.4. &nbsp; 小结
</a>
</li>
@@ -1465,7 +1401,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
11.6. &nbsp; 桶排序New
11.6. &nbsp; 桶排序
</a>
</li>
@@ -1479,7 +1415,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
11.7. &nbsp; 计数排序New
11.7. &nbsp; 计数排序
</a>
</li>
@@ -1493,7 +1429,7 @@
<li class="md-nav__item">
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
11.8. &nbsp; 基数排序New
11.8. &nbsp; 基数排序
</a>
</li>
@@ -1541,17 +1477,21 @@
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 回溯算法
12. &nbsp; &nbsp; 搜索算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1561,8 +1501,36 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
12.1. &nbsp; 回溯算法New
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
12.1. &nbsp; 搜索算法New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
12.2. &nbsp; 哈希优化策略
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
12.3. &nbsp; 小结
</a>
</li>
@@ -1596,19 +1564,17 @@
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
13. &nbsp; &nbsp; 附录
13. &nbsp; &nbsp; 回溯算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1618,22 +1584,8 @@
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
13.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
13.2. &nbsp; 一起参与创作
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
13.1. &nbsp; 回溯算法New
</a>
</li>
@@ -1666,6 +1618,77 @@
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
14. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
14. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
14.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
14.2. &nbsp; 一起参与创作
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
@@ -1678,8 +1701,8 @@
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
参考文献
</label>
@@ -1734,7 +1757,7 @@
<h1 id="83">8.3. &nbsp; 小结<a class="headerlink" href="#83" title="Permanent link">&para;</a></h1>
<h1 id="93">9.3. &nbsp; 小结<a class="headerlink" href="#93" title="Permanent link">&para;</a></h1>
<ul>
<li>堆是一棵完全二叉树,根据成立条件可分为大顶堆和小顶堆。大(小)顶堆的堆顶元素是最大(小)的。</li>
<li>优先队列的定义是具有出队优先级的队列,通常使用堆来实现。</li>
@@ -1820,7 +1843,7 @@
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../build_heap/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.2. &amp;nbsp; 建堆操作 *" rel="prev">
<a href="../build_heap/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 9.2. &amp;nbsp; 建堆操作 *" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
@@ -1829,20 +1852,20 @@
上一页
</span>
<div class="md-ellipsis">
8.2. &nbsp; 建堆操作 *
9.2. &nbsp; 建堆操作 *
</div>
</div>
</a>
<a href="../../chapter_graph/graph/" class="md-footer__link md-footer__link--next" aria-label="下一页: 9.1. &amp;nbsp; 图" rel="next">
<a href="../../chapter_graph/graph/" class="md-footer__link md-footer__link--next" aria-label="下一页: 10.1. &amp;nbsp; 图" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
9.1. &nbsp;
10.1. &nbsp;
</div>
</div>
<div class="md-footer__button md-icon">