This commit is contained in:
krahets
2023-09-22 13:08:10 +08:00
parent 5bb9f76fbc
commit 6fffa33695
107 changed files with 2561 additions and 19178 deletions
+27 -187
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2393,14 +2388,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2432,14 +2419,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2460,14 +2439,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2488,14 +2459,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2516,14 +2479,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2544,14 +2499,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2783,14 +2730,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2822,14 +2761,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2850,14 +2781,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2878,14 +2801,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2906,14 +2821,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2934,14 +2841,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2962,14 +2861,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2990,14 +2881,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3056,14 +2939,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3095,14 +2970,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3123,14 +2990,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3151,14 +3010,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3179,14 +3030,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3207,14 +3050,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3493,25 +3328,25 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="利用元素交换操作模拟冒泡" src="../bubble_sort.assets/bubble_operation_step1.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="利用元素交换操作模拟冒泡" src="../bubble_sort.assets/bubble_operation_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step2" src="../bubble_sort.assets/bubble_operation_step2.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step2" src="../bubble_sort.assets/bubble_operation_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step3" src="../bubble_sort.assets/bubble_operation_step3.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step3" src="../bubble_sort.assets/bubble_operation_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step4" src="../bubble_sort.assets/bubble_operation_step4.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step4" src="../bubble_sort.assets/bubble_operation_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step5" src="../bubble_sort.assets/bubble_operation_step5.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step5" src="../bubble_sort.assets/bubble_operation_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step6" src="../bubble_sort.assets/bubble_operation_step6.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step6" src="../bubble_sort.assets/bubble_operation_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step7" src="../bubble_sort.assets/bubble_operation_step7.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_operation_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="bubble_operation_step7" src="../bubble_sort.assets/bubble_operation_step7.png" /></a></p>
</div>
</div>
</div>
@@ -3525,7 +3360,7 @@
<li>以此类推,经过 <span class="arithmatex">\(n - 1\)</span> 轮“冒泡”后,<strong><span class="arithmatex">\(n - 1\)</span> 大的元素都被交换至正确位置</strong></li>
<li>仅剩的一个元素必定是最小元素,无须排序,因此数组排序完成。</li>
</ol>
<p><img alt="冒泡排序流程" src="../bubble_sort.assets/bubble_sort_overview.png" /></p>
<p><a class="glightbox" href="../bubble_sort.assets/bubble_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="冒泡排序流程" src="../bubble_sort.assets/bubble_sort_overview.png" /></a></p>
<p align="center"> 图 11-5 &nbsp; 冒泡排序流程 </p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:12"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><input id="__tabbed_2_9" name="__tabbed_2" type="radio" /><input id="__tabbed_2_10" name="__tabbed_2" type="radio" /><input id="__tabbed_2_11" name="__tabbed_2" type="radio" /><input id="__tabbed_2_12" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Java</label><label for="__tabbed_2_4">C#</label><label for="__tabbed_2_5">Go</label><label for="__tabbed_2_6">Swift</label><label for="__tabbed_2_7">JS</label><label for="__tabbed_2_8">TS</label><label for="__tabbed_2_9">Dart</label><label for="__tabbed_2_10">Rust</label><label for="__tabbed_2_11">C</label><label for="__tabbed_2_12">Zig</label></div>
@@ -4169,10 +4004,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4241,5 +4081,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+22 -182
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2393,14 +2388,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2432,14 +2419,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2460,14 +2439,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2488,14 +2459,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2516,14 +2479,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2544,14 +2499,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2783,14 +2730,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2822,14 +2761,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2850,14 +2781,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2878,14 +2801,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2906,14 +2821,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2934,14 +2841,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2962,14 +2861,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2990,14 +2881,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3056,14 +2939,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3095,14 +2970,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3123,14 +2990,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3151,14 +3010,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3179,14 +3030,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3207,14 +3050,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3497,7 +3332,7 @@
<li>对每个桶分别执行排序(本文采用编程语言的内置排序函数)。</li>
<li>按照桶的从小到大的顺序,合并结果。</li>
</ol>
<p><img alt="桶排序算法流程" src="../bucket_sort.assets/bucket_sort_overview.png" /></p>
<p><a class="glightbox" href="../bucket_sort.assets/bucket_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="桶排序算法流程" src="../bucket_sort.assets/bucket_sort_overview.png" /></a></p>
<p align="center"> 图 11-13 &nbsp; 桶排序算法流程 </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:12"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Java</label><label for="__tabbed_1_4">C#</label><label for="__tabbed_1_5">Go</label><label for="__tabbed_1_6">Swift</label><label for="__tabbed_1_7">JS</label><label for="__tabbed_1_8">TS</label><label for="__tabbed_1_9">Dart</label><label for="__tabbed_1_10">Rust</label><label for="__tabbed_1_11">C</label><label for="__tabbed_1_12">Zig</label></div>
@@ -3864,12 +3699,12 @@
<p>桶排序的时间复杂度理论上可以达到 <span class="arithmatex">\(O(n)\)</span> <strong>关键在于将元素均匀分配到各个桶中</strong>,因为实际数据往往不是均匀分布的。例如,我们想要将淘宝上的所有商品按价格范围平均分配到 10 个桶中,但商品价格分布不均,低于 100 元的非常多,高于 1000 元的非常少。若将价格区间平均划分为 10 份,各个桶中的商品数量差距会非常大。</p>
<p>为实现平均分配,我们可以先设定一个大致的分界线,将数据粗略地分到 3 个桶中。<strong>分配完毕后,再将商品较多的桶继续划分为 3 个桶,直至所有桶中的元素数量大致相等</strong></p>
<p>如图 11-14 所示,这种方法本质上是创建一个递归树,目标是让叶节点的值尽可能平均。当然,不一定要每轮将数据划分为 3 个桶,具体划分方式可根据数据特点灵活选择。</p>
<p><img alt="递归划分桶" src="../bucket_sort.assets/scatter_in_buckets_recursively.png" /></p>
<p><a class="glightbox" href="../bucket_sort.assets/scatter_in_buckets_recursively.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="递归划分桶" src="../bucket_sort.assets/scatter_in_buckets_recursively.png" /></a></p>
<p align="center"> 图 11-14 &nbsp; 递归划分桶 </p>
<p>如果我们提前知道商品价格的概率分布,<strong>则可以根据数据概率分布设置每个桶的价格分界线</strong>。值得注意的是,数据分布并不一定需要特意统计,也可以根据数据特点采用某种概率模型进行近似。</p>
<p>如图 11-15 所示,我们假设商品价格服从正态分布,这样就可以合理地设定价格区间,从而将商品平均分配到各个桶中。</p>
<p><img alt="根据概率分布划分桶" src="../bucket_sort.assets/scatter_in_buckets_distribution.png" /></p>
<p><a class="glightbox" href="../bucket_sort.assets/scatter_in_buckets_distribution.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="根据概率分布划分桶" src="../bucket_sort.assets/scatter_in_buckets_distribution.png" /></a></p>
<p align="center"> 图 11-15 &nbsp; 根据概率分布划分桶 </p>
<!-- Source file information -->
@@ -4034,10 +3869,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4106,5 +3946,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+28 -188
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2400,14 +2395,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2439,14 +2426,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2467,14 +2446,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2495,14 +2466,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2523,14 +2486,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2551,14 +2506,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2790,14 +2737,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2829,14 +2768,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2857,14 +2788,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2885,14 +2808,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2913,14 +2828,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2941,14 +2848,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2969,14 +2868,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2997,14 +2888,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3063,14 +2946,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3102,14 +2977,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3130,14 +2997,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3158,14 +3017,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3186,14 +3037,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3214,14 +3057,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3510,7 +3345,7 @@
<li><strong>借助 <code>counter</code> 统计 <code>nums</code> 中各数字的出现次数</strong>,其中 <code>counter[num]</code> 对应数字 <code>num</code> 的出现次数。统计方法很简单,只需遍历 <code>nums</code>(设当前数字为 <code>num</code>),每轮将 <code>counter[num]</code> 增加 <span class="arithmatex">\(1\)</span> 即可。</li>
<li><strong>由于 <code>counter</code> 的各个索引天然有序,因此相当于所有数字已经被排序好了</strong>。接下来,我们遍历 <code>counter</code> ,根据各数字的出现次数,将它们按从小到大的顺序填入 <code>nums</code> 即可。</li>
</ol>
<p><img alt="计数排序流程" src="../counting_sort.assets/counting_sort_overview.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="计数排序流程" src="../counting_sort.assets/counting_sort_overview.png" /></a></p>
<p align="center"> 图 11-16 &nbsp; 计数排序流程 </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:12"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Java</label><label for="__tabbed_1_4">C#</label><label for="__tabbed_1_5">Go</label><label for="__tabbed_1_6">Swift</label><label for="__tabbed_1_7">JS</label><label for="__tabbed_1_8">TS</label><label for="__tabbed_1_9">Dart</label><label for="__tabbed_1_10">Rust</label><label for="__tabbed_1_11">C</label><label for="__tabbed_1_12">Zig</label></div>
@@ -3811,28 +3646,28 @@
<div class="tabbed-set tabbed-alternate" data-tabs="2:8"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">&lt;1&gt;</label><label for="__tabbed_2_2">&lt;2&gt;</label><label for="__tabbed_2_3">&lt;3&gt;</label><label for="__tabbed_2_4">&lt;4&gt;</label><label for="__tabbed_2_5">&lt;5&gt;</label><label for="__tabbed_2_6">&lt;6&gt;</label><label for="__tabbed_2_7">&lt;7&gt;</label><label for="__tabbed_2_8">&lt;8&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="计数排序步骤" src="../counting_sort.assets/counting_sort_step1.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="计数排序步骤" src="../counting_sort.assets/counting_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step2" src="../counting_sort.assets/counting_sort_step2.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step2" src="../counting_sort.assets/counting_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step3" src="../counting_sort.assets/counting_sort_step3.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step3" src="../counting_sort.assets/counting_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step4" src="../counting_sort.assets/counting_sort_step4.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step4" src="../counting_sort.assets/counting_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step5" src="../counting_sort.assets/counting_sort_step5.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step5" src="../counting_sort.assets/counting_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step6" src="../counting_sort.assets/counting_sort_step6.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step6" src="../counting_sort.assets/counting_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step7" src="../counting_sort.assets/counting_sort_step7.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step7" src="../counting_sort.assets/counting_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="counting_sort_step8" src="../counting_sort.assets/counting_sort_step8.png" /></p>
<p><a class="glightbox" href="../counting_sort.assets/counting_sort_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="counting_sort_step8" src="../counting_sort.assets/counting_sort_step8.png" /></a></p>
</div>
</div>
</div>
@@ -4398,10 +4233,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4470,5 +4310,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+31 -191
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2386,14 +2381,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2425,14 +2412,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2453,14 +2432,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2481,14 +2452,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2509,14 +2472,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2537,14 +2492,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2776,14 +2723,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2815,14 +2754,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2843,14 +2774,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2871,14 +2794,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2899,14 +2814,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2927,14 +2834,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2955,14 +2854,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2983,14 +2874,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3049,14 +2932,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3088,14 +2963,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3116,14 +2983,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3144,14 +3003,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3172,14 +3023,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3200,14 +3043,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3499,40 +3334,40 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:12"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label><label for="__tabbed_1_10">&lt;10&gt;</label><label for="__tabbed_1_11">&lt;11&gt;</label><label for="__tabbed_1_12">&lt;12&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="堆排序步骤" src="../heap_sort.assets/heap_sort_step1.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="堆排序步骤" src="../heap_sort.assets/heap_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step2" src="../heap_sort.assets/heap_sort_step2.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step2" src="../heap_sort.assets/heap_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step3" src="../heap_sort.assets/heap_sort_step3.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step3" src="../heap_sort.assets/heap_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step4" src="../heap_sort.assets/heap_sort_step4.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step4" src="../heap_sort.assets/heap_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step5" src="../heap_sort.assets/heap_sort_step5.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step5" src="../heap_sort.assets/heap_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step6" src="../heap_sort.assets/heap_sort_step6.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step6" src="../heap_sort.assets/heap_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step7" src="../heap_sort.assets/heap_sort_step7.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step7" src="../heap_sort.assets/heap_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step8" src="../heap_sort.assets/heap_sort_step8.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step8" src="../heap_sort.assets/heap_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step9" src="../heap_sort.assets/heap_sort_step9.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step9" src="../heap_sort.assets/heap_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step10" src="../heap_sort.assets/heap_sort_step10.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step10.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step10" src="../heap_sort.assets/heap_sort_step10.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step11" src="../heap_sort.assets/heap_sort_step11.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step11.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step11" src="../heap_sort.assets/heap_sort_step11.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_sort_step12" src="../heap_sort.assets/heap_sort_step12.png" /></p>
<p><a class="glightbox" href="../heap_sort.assets/heap_sort_step12.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="heap_sort_step12" src="../heap_sort.assets/heap_sort_step12.png" /></a></p>
</div>
</div>
</div>
@@ -4162,10 +3997,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4234,5 +4074,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+20 -180
View File
@@ -60,7 +60,18 @@
</head>
<link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2332,14 +2327,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2371,14 +2358,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2399,14 +2378,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2427,14 +2398,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2455,14 +2418,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2483,14 +2438,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2722,14 +2669,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2761,14 +2700,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2789,14 +2720,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2817,14 +2740,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2845,14 +2760,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2873,14 +2780,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2901,14 +2800,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2929,14 +2820,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2995,14 +2878,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3034,14 +2909,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3062,14 +2929,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3090,14 +2949,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3118,14 +2969,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3146,14 +2989,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3414,7 +3249,7 @@
<!-- Page content -->
<h1 id="11">第 11 章 &nbsp; 排序<a class="headerlink" href="#11" title="Permanent link">&para;</a></h1>
<div class="center-table">
<p><img alt="排序" src="../assets/covers/chapter_sorting.jpg" width="600" /></p>
<p><a class="glightbox" href="../assets/covers/chapter_sorting.jpg" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="排序" src="../assets/covers/chapter_sorting.jpg" width="600" /></a></p>
</div>
<div class="admonition abstract">
<p class="admonition-title">Abstract</p>
@@ -3598,10 +3433,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -3670,5 +3510,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+21 -181
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2393,14 +2388,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2432,14 +2419,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2460,14 +2439,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2488,14 +2459,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2516,14 +2479,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2544,14 +2499,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2783,14 +2730,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2822,14 +2761,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2850,14 +2781,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2878,14 +2801,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2906,14 +2821,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2934,14 +2841,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2962,14 +2861,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2990,14 +2881,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3056,14 +2939,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3095,14 +2970,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3123,14 +2990,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3151,14 +3010,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3179,14 +3030,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3207,14 +3050,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3491,7 +3326,7 @@
<p>「插入排序 insertion sort」是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非常相似。</p>
<p>具体来说,我们在未排序区间选择一个基准元素,将该元素与其左侧已排序区间的元素逐一比较大小,并将该元素插入到正确的位置。</p>
<p>图 11-6 展示了数组插入元素的操作流程。设基准元素为 <code>base</code> ,我们需要将从目标索引到 <code>base</code> 之间的所有元素向右移动一位,然后再将 <code>base</code> 赋值给目标索引。</p>
<p><img alt="单次插入操作" src="../insertion_sort.assets/insertion_operation.png" /></p>
<p><a class="glightbox" href="../insertion_sort.assets/insertion_operation.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="单次插入操作" src="../insertion_sort.assets/insertion_operation.png" /></a></p>
<p align="center"> 图 11-6 &nbsp; 单次插入操作 </p>
<h2 id="1141">11.4.1 &nbsp; 算法流程<a class="headerlink" href="#1141" title="Permanent link">&para;</a></h2>
@@ -3502,7 +3337,7 @@
<li>选取第 3 个元素作为 <code>base</code> ,将其插入到正确位置后,<strong>数组的前 3 个元素已排序</strong></li>
<li>以此类推,在最后一轮中,选取最后一个元素作为 <code>base</code> ,将其插入到正确位置后,<strong>所有元素均已排序</strong></li>
</ol>
<p><img alt="插入排序流程" src="../insertion_sort.assets/insertion_sort_overview.png" /></p>
<p><a class="glightbox" href="../insertion_sort.assets/insertion_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="插入排序流程" src="../insertion_sort.assets/insertion_sort_overview.png" /></a></p>
<p align="center"> 图 11-7 &nbsp; 插入排序流程 </p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:12"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Java</label><label for="__tabbed_1_4">C#</label><label for="__tabbed_1_5">Go</label><label for="__tabbed_1_6">Swift</label><label for="__tabbed_1_7">JS</label><label for="__tabbed_1_8">TS</label><label for="__tabbed_1_9">Dart</label><label for="__tabbed_1_10">Rust</label><label for="__tabbed_1_11">C</label><label for="__tabbed_1_12">Zig</label></div>
@@ -3885,10 +3720,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -3957,5 +3797,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+30 -190
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2393,14 +2388,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2432,14 +2419,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2460,14 +2439,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2488,14 +2459,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2516,14 +2479,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2544,14 +2499,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2783,14 +2730,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2822,14 +2761,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2850,14 +2781,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2878,14 +2801,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2906,14 +2821,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2934,14 +2841,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2962,14 +2861,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2990,14 +2881,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3056,14 +2939,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3095,14 +2970,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3123,14 +2990,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3151,14 +3010,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3179,14 +3030,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3207,14 +3050,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3493,7 +3328,7 @@
<li><strong>划分阶段</strong>:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。</li>
<li><strong>合并阶段</strong>:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较长的有序数组,直至结束。</li>
</ol>
<p><img alt="归并排序的划分与合并阶段" src="../merge_sort.assets/merge_sort_overview.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="归并排序的划分与合并阶段" src="../merge_sort.assets/merge_sort_overview.png" /></a></p>
<p align="center"> 图 11-10 &nbsp; 归并排序的划分与合并阶段 </p>
<h2 id="1161">11.6.1 &nbsp; 算法流程<a class="headerlink" href="#1161" title="Permanent link">&para;</a></h2>
@@ -3506,34 +3341,34 @@
<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">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label><label for="__tabbed_1_10">&lt;10&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="归并排序步骤" src="../merge_sort.assets/merge_sort_step1.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="归并排序步骤" src="../merge_sort.assets/merge_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step2" src="../merge_sort.assets/merge_sort_step2.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step2" src="../merge_sort.assets/merge_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step3" src="../merge_sort.assets/merge_sort_step3.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step3" src="../merge_sort.assets/merge_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step4" src="../merge_sort.assets/merge_sort_step4.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step4" src="../merge_sort.assets/merge_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step5" src="../merge_sort.assets/merge_sort_step5.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step5" src="../merge_sort.assets/merge_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step6" src="../merge_sort.assets/merge_sort_step6.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step6" src="../merge_sort.assets/merge_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step7" src="../merge_sort.assets/merge_sort_step7.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step7" src="../merge_sort.assets/merge_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step8" src="../merge_sort.assets/merge_sort_step8.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step8" src="../merge_sort.assets/merge_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step9" src="../merge_sort.assets/merge_sort_step9.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step9" src="../merge_sort.assets/merge_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step10" src="../merge_sort.assets/merge_sort_step10.png" /></p>
<p><a class="glightbox" href="../merge_sort.assets/merge_sort_step10.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="merge_sort_step10" src="../merge_sort.assets/merge_sort_step10.png" /></a></p>
</div>
</div>
</div>
@@ -4266,10 +4101,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4338,5 +4178,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+29 -189
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2407,14 +2402,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2446,14 +2433,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2474,14 +2453,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2502,14 +2473,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2530,14 +2493,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2558,14 +2513,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2797,14 +2744,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2836,14 +2775,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2864,14 +2795,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2892,14 +2815,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2920,14 +2835,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2948,14 +2855,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2976,14 +2875,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3004,14 +2895,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3070,14 +2953,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3109,14 +2984,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3137,14 +3004,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3165,14 +3024,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3193,14 +3044,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3221,14 +3064,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3526,31 +3361,31 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:9"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="哨兵划分步骤" src="../quick_sort.assets/pivot_division_step1.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="哨兵划分步骤" src="../quick_sort.assets/pivot_division_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step2" src="../quick_sort.assets/pivot_division_step2.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step2" src="../quick_sort.assets/pivot_division_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step3" src="../quick_sort.assets/pivot_division_step3.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step3" src="../quick_sort.assets/pivot_division_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step4" src="../quick_sort.assets/pivot_division_step4.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step4" src="../quick_sort.assets/pivot_division_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step5" src="../quick_sort.assets/pivot_division_step5.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step5" src="../quick_sort.assets/pivot_division_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step6" src="../quick_sort.assets/pivot_division_step6.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step6" src="../quick_sort.assets/pivot_division_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step7" src="../quick_sort.assets/pivot_division_step7.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step7" src="../quick_sort.assets/pivot_division_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step8" src="../quick_sort.assets/pivot_division_step8.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step8" src="../quick_sort.assets/pivot_division_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step9" src="../quick_sort.assets/pivot_division_step9.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/pivot_division_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="pivot_division_step9" src="../quick_sort.assets/pivot_division_step9.png" /></a></p>
</div>
</div>
</div>
@@ -3861,7 +3696,7 @@
<li>然后,对左子数组和右子数组分别递归执行“哨兵划分”。</li>
<li>持续递归,直至子数组长度为 1 时终止,从而完成整个数组的排序。</li>
</ol>
<p><img alt="快速排序流程" src="../quick_sort.assets/quick_sort_overview.png" /></p>
<p><a class="glightbox" href="../quick_sort.assets/quick_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="快速排序流程" src="../quick_sort.assets/quick_sort_overview.png" /></a></p>
<p align="center"> 图 11-9 &nbsp; 快速排序流程 </p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:12"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><input id="__tabbed_3_3" name="__tabbed_3" type="radio" /><input id="__tabbed_3_4" name="__tabbed_3" type="radio" /><input id="__tabbed_3_5" name="__tabbed_3" type="radio" /><input id="__tabbed_3_6" name="__tabbed_3" type="radio" /><input id="__tabbed_3_7" name="__tabbed_3" type="radio" /><input id="__tabbed_3_8" name="__tabbed_3" type="radio" /><input id="__tabbed_3_9" name="__tabbed_3" type="radio" /><input id="__tabbed_3_10" name="__tabbed_3" type="radio" /><input id="__tabbed_3_11" name="__tabbed_3" type="radio" /><input id="__tabbed_3_12" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Python</label><label for="__tabbed_3_2">C++</label><label for="__tabbed_3_3">Java</label><label for="__tabbed_3_4">C#</label><label for="__tabbed_3_5">Go</label><label for="__tabbed_3_6">Swift</label><label for="__tabbed_3_7">JS</label><label for="__tabbed_3_8">TS</label><label for="__tabbed_3_9">Dart</label><label for="__tabbed_3_10">Rust</label><label for="__tabbed_3_11">C</label><label for="__tabbed_3_12">Zig</label></div>
@@ -4901,10 +4736,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4973,5 +4813,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+20 -180
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2386,14 +2381,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2425,14 +2412,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2453,14 +2432,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2481,14 +2452,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2509,14 +2472,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2537,14 +2492,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2776,14 +2723,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2815,14 +2754,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2843,14 +2774,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2871,14 +2794,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2899,14 +2814,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2927,14 +2834,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2955,14 +2854,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2983,14 +2874,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3049,14 +2932,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3088,14 +2963,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3116,14 +2983,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3144,14 +3003,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3172,14 +3023,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3200,14 +3043,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3483,7 +3318,7 @@
<li>对学号的第 <span class="arithmatex">\(k\)</span> 位执行“计数排序”。完成后,数据会根据第 <span class="arithmatex">\(k\)</span> 位从小到大排序。</li>
<li><span class="arithmatex">\(k\)</span> 增加 <span class="arithmatex">\(1\)</span> ,然后返回步骤 <code>2.</code> 继续迭代,直到所有位都排序完成后结束。</li>
</ol>
<p><img alt="基数排序算法流程" src="../radix_sort.assets/radix_sort_overview.png" /></p>
<p><a class="glightbox" href="../radix_sort.assets/radix_sort_overview.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="基数排序算法流程" src="../radix_sort.assets/radix_sort_overview.png" /></a></p>
<p align="center"> 图 11-18 &nbsp; 基数排序算法流程 </p>
<p>下面来剖析代码实现。对于一个 <span class="arithmatex">\(d\)</span> 进制的数字 <span class="arithmatex">\(x\)</span> ,要获取其第 <span class="arithmatex">\(k\)</span><span class="arithmatex">\(x_k\)</span> ,可以使用以下计算公式:</p>
@@ -4300,10 +4135,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -4372,5 +4212,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+31 -191
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2379,14 +2374,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2418,14 +2405,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2446,14 +2425,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2474,14 +2445,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2502,14 +2465,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2530,14 +2485,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2769,14 +2716,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2808,14 +2747,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2836,14 +2767,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2864,14 +2787,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2892,14 +2807,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2920,14 +2827,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2948,14 +2847,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2976,14 +2867,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3042,14 +2925,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3081,14 +2956,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3109,14 +2976,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3137,14 +2996,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3165,14 +3016,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3193,14 +3036,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3472,37 +3307,37 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:11"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label><label for="__tabbed_1_10">&lt;10&gt;</label><label for="__tabbed_1_11">&lt;11&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="选择排序步骤" src="../selection_sort.assets/selection_sort_step1.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="选择排序步骤" src="../selection_sort.assets/selection_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step2" src="../selection_sort.assets/selection_sort_step2.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step2" src="../selection_sort.assets/selection_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step3" src="../selection_sort.assets/selection_sort_step3.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step3" src="../selection_sort.assets/selection_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step4" src="../selection_sort.assets/selection_sort_step4.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step4" src="../selection_sort.assets/selection_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step5" src="../selection_sort.assets/selection_sort_step5.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step5" src="../selection_sort.assets/selection_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step6" src="../selection_sort.assets/selection_sort_step6.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step6" src="../selection_sort.assets/selection_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step7" src="../selection_sort.assets/selection_sort_step7.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step7" src="../selection_sort.assets/selection_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step8" src="../selection_sort.assets/selection_sort_step8.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step8" src="../selection_sort.assets/selection_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step9" src="../selection_sort.assets/selection_sort_step9.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step9" src="../selection_sort.assets/selection_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step10" src="../selection_sort.assets/selection_sort_step10.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step10.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step10" src="../selection_sort.assets/selection_sort_step10.png" /></a></p>
</div>
<div class="tabbed-block">
<p><img alt="selection_sort_step11" src="../selection_sort.assets/selection_sort_step11.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_step11.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="selection_sort_step11" src="../selection_sort.assets/selection_sort_step11.png" /></a></p>
</div>
</div>
</div>
@@ -3728,7 +3563,7 @@
<li><strong>空间复杂度 <span class="arithmatex">\(O(1)\)</span>、原地排序</strong>:指针 <span class="arithmatex">\(i\)</span><span class="arithmatex">\(j\)</span> 使用常数大小的额外空间。</li>
<li><strong>非稳定排序</strong>:如图 11-3 所示,元素 <code>nums[i]</code> 有可能被交换至与其相等的元素的右边,导致两者相对顺序发生改变。</li>
</ul>
<p><img alt="选择排序非稳定示例" src="../selection_sort.assets/selection_sort_instability.png" /></p>
<p><a class="glightbox" href="../selection_sort.assets/selection_sort_instability.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="选择排序非稳定示例" src="../selection_sort.assets/selection_sort_instability.png" /></a></p>
<p align="center"> 图 11-3 &nbsp; 选择排序非稳定示例 </p>
<!-- Source file information -->
@@ -3893,10 +3728,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -3965,5 +3805,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+20 -180
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2386,14 +2381,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2425,14 +2412,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2453,14 +2432,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2481,14 +2452,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2509,14 +2472,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2537,14 +2492,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2776,14 +2723,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2815,14 +2754,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2843,14 +2774,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2871,14 +2794,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2899,14 +2814,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2927,14 +2834,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2955,14 +2854,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2983,14 +2874,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3049,14 +2932,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3088,14 +2963,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3116,14 +2983,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3144,14 +3003,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3172,14 +3023,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3200,14 +3043,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3476,7 +3311,7 @@
<h1 id="111">11.1 &nbsp; 排序算法<a class="headerlink" href="#111" title="Permanent link">&para;</a></h1>
<p>「排序算法 sorting algorithm」用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序数据通常能够被更有效地查找、分析和处理。</p>
<p>如图 11-1 所示,排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求设定,如数字大小、字符 ASCII 码顺序或自定义规则。</p>
<p><img alt="数据类型和判断规则示例" src="../sorting_algorithm.assets/sorting_examples.png" /></p>
<p><a class="glightbox" href="../sorting_algorithm.assets/sorting_examples.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="数据类型和判断规则示例" src="../sorting_algorithm.assets/sorting_examples.png" /></a></p>
<p align="center"> 图 11-1 &nbsp; 数据类型和判断规则示例 </p>
<h2 id="1111">11.1.1 &nbsp; 评价维度<a class="headerlink" href="#1111" title="Permanent link">&para;</a></h2>
@@ -3670,10 +3505,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -3742,5 +3582,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>
+20 -180
View File
@@ -60,7 +60,18 @@
</head>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
@@ -1875,14 +1886,6 @@
10.2 &nbsp; 二分查找插入点
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -1903,14 +1906,6 @@
10.3 &nbsp; 二分查找边界
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2386,14 +2381,6 @@
第 12 章 &nbsp; 分治
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2425,14 +2412,6 @@
12.1 &nbsp; 分治算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2453,14 +2432,6 @@
12.2 &nbsp; 分治搜索策略
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2481,14 +2452,6 @@
12.3 &nbsp; 构建树问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2509,14 +2472,6 @@
12.4 &nbsp; 汉诺塔问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2537,14 +2492,6 @@
12.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2776,14 +2723,6 @@
第 14 章 &nbsp; 动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -2815,14 +2754,6 @@
14.1 &nbsp; 初探动态规划
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2843,14 +2774,6 @@
14.2 &nbsp; DP 问题特性
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2871,14 +2794,6 @@
14.3 &nbsp; DP 解题思路
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2899,14 +2814,6 @@
14.4 &nbsp; 0-1 背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2927,14 +2834,6 @@
14.5 &nbsp; 完全背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2955,14 +2854,6 @@
14.6 &nbsp; 编辑距离问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -2983,14 +2874,6 @@
14.7 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3049,14 +2932,6 @@
第 15 章 &nbsp; 贪心
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
@@ -3088,14 +2963,6 @@
15.1 &nbsp; 贪心算法
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3116,14 +2983,6 @@
15.2 &nbsp; 分数背包问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3144,14 +3003,6 @@
15.3 &nbsp; 最大容量问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3172,14 +3023,6 @@
15.4 &nbsp; 最大切分乘积问题
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3200,14 +3043,6 @@
15.5 &nbsp; 小结
</span>
<span class="md-status md-status--new" title="最近添加">
</span>
</a>
</li>
@@ -3486,7 +3321,7 @@
<li>总的来说,我们希望找到一种排序算法,具有高效率、稳定、原地以及正向自适应性等优点。然而,正如其他数据结构和算法一样,没有一种排序算法能够同时满足所有这些条件。在实际应用中,我们需要根据数据的特性来选择合适的排序算法。</li>
<li>图 11-19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。</li>
</ul>
<p><img alt="排序算法对比" src="../summary.assets/sorting_algorithms_comparison.png" /></p>
<p><a class="glightbox" href="../summary.assets/sorting_algorithms_comparison.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="排序算法对比" src="../summary.assets/sorting_algorithms_comparison.png" /></a></p>
<p align="center"> 图 11-19 &nbsp; 排序算法对比 </p>
<h3 id="2-q-a">2. &nbsp; Q &amp; A<a class="headerlink" href="#2-q-a" title="Permanent link">&para;</a></h3>
@@ -3679,10 +3514,15 @@ aria-label="页脚"
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
Copyright &copy; 2022 - 2023 Krahets
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<!-- Social links -->
@@ -3751,5 +3591,5 @@ aria-label="页脚"
</body>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": false, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "none"});})</script></body>
</html>