This commit is contained in:
krahets
2023-11-09 05:13:54 +08:00
parent 9a09f9407e
commit 3f666fa676
85 changed files with 619 additions and 610 deletions
+8 -8
View File
@@ -3371,25 +3371,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><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>
<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="利用元素交换操作模拟冒泡" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../bubble_sort.assets/bubble_operation_step7.png" /></a></p>
</div>
</div>
</div>
@@ -3403,7 +3403,7 @@
<li>以此类推,经过 <span class="arithmatex">\(n - 1\)</span> 轮“冒泡”后,<strong><span class="arithmatex">\(n - 1\)</span> 大的元素都被交换至正确位置</strong></li>
<li>仅剩的一个元素必定是最小元素,无须排序,因此数组排序完成。</li>
</ol>
<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><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="冒泡排序流程" class="animation-figure" 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>
+3 -3
View File
@@ -3375,7 +3375,7 @@
<li>对每个桶分别执行排序(本文采用编程语言的内置排序函数)。</li>
<li>按照桶的从小到大的顺序,合并结果。</li>
</ol>
<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><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="桶排序算法流程" class="animation-figure" 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>
@@ -3742,12 +3742,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><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><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="递归划分桶" class="animation-figure" 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><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><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="根据概率分布划分桶" class="animation-figure" src="../bucket_sort.assets/scatter_in_buckets_distribution.png" /></a></p>
<p align="center"> 图 11-15 &nbsp; 根据概率分布划分桶 </p>
<!-- Source file information -->
+9 -9
View File
@@ -3388,7 +3388,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><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><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="计数排序流程" class="animation-figure" 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>
@@ -3689,28 +3689,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><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>
<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="计数排序步骤" class="animation-figure" src="../counting_sort.assets/counting_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../counting_sort.assets/counting_sort_step8.png" /></a></p>
</div>
</div>
</div>
+12 -12
View File
@@ -3377,40 +3377,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><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>
<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="堆排序步骤" class="animation-figure" src="../heap_sort.assets/heap_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step10.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step11.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../heap_sort.assets/heap_sort_step12.png" /></a></p>
</div>
</div>
</div>
+1 -1
View File
@@ -3292,7 +3292,7 @@
<!-- Page content -->
<h1 id="11">第 11 章 &nbsp; 排序<a class="headerlink" href="#11" title="Permanent link">&para;</a></h1>
<div class="center-table">
<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>
<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="排序" class="cover-image" src="../assets/covers/chapter_sorting.jpg" /></a></p>
</div>
<div class="admonition abstract">
<p class="admonition-title">Abstract</p>
+2 -2
View File
@@ -3369,7 +3369,7 @@
<p>「插入排序 insertion sort」是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非常相似。</p>
<p>具体来说,我们在未排序区间选择一个基准元素,将该元素与其左侧已排序区间的元素逐一比较大小,并将该元素插入到正确的位置。</p>
<p>图 11-6 展示了数组插入元素的操作流程。设基准元素为 <code>base</code> ,我们需要将从目标索引到 <code>base</code> 之间的所有元素向右移动一位,然后再将 <code>base</code> 赋值给目标索引。</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><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="单次插入操作" class="animation-figure" 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>
@@ -3380,7 +3380,7 @@
<li>选取第 3 个元素作为 <code>base</code> ,将其插入到正确位置后,<strong>数组的前 3 个元素已排序</strong></li>
<li>以此类推,在最后一轮中,选取最后一个元素作为 <code>base</code> ,将其插入到正确位置后,<strong>所有元素均已排序</strong></li>
</ol>
<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><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="插入排序流程" class="animation-figure" 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>
+11 -11
View File
@@ -3371,7 +3371,7 @@
<li><strong>划分阶段</strong>:通过递归不断地将数组从中点处分开,将长数组的排序问题转换为短数组的排序问题。</li>
<li><strong>合并阶段</strong>:当子数组长度为 1 时终止划分,开始合并,持续地将左右两个较短的有序数组合并为一个较长的有序数组,直至结束。</li>
</ol>
<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><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="归并排序的划分与合并阶段" class="animation-figure" 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>
@@ -3384,34 +3384,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><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>
<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="归并排序步骤" class="animation-figure" src="../merge_sort.assets/merge_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../merge_sort.assets/merge_sort_step10.png" /></a></p>
</div>
</div>
</div>
+10 -10
View File
@@ -3404,31 +3404,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><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>
<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="哨兵划分步骤" class="animation-figure" src="../quick_sort.assets/pivot_division_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../quick_sort.assets/pivot_division_step9.png" /></a></p>
</div>
</div>
</div>
@@ -3737,7 +3737,7 @@
<li>然后,对左子数组和右子数组分别递归执行“哨兵划分”。</li>
<li>持续递归,直至子数组长度为 1 时终止,从而完成整个数组的排序。</li>
</ol>
<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><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="快速排序流程" class="animation-figure" 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>
+1 -1
View File
@@ -3361,7 +3361,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><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><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="基数排序算法流程" class="animation-figure" 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>
+12 -12
View File
@@ -3350,37 +3350,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><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>
<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="选择排序步骤" class="animation-figure" src="../selection_sort.assets/selection_sort_step1.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step2.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step3.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step4.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step5.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step6.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step7.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step8.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step9.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step10.png" /></a></p>
</div>
<div class="tabbed-block">
<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>
<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" class="animation-figure" src="../selection_sort.assets/selection_sort_step11.png" /></a></p>
</div>
</div>
</div>
@@ -3606,7 +3606,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><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><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="选择排序非稳定示例" class="animation-figure" src="../selection_sort.assets/selection_sort_instability.png" /></a></p>
<p align="center"> 图 11-3 &nbsp; 选择排序非稳定示例 </p>
<!-- Source file information -->
+1 -1
View File
@@ -3354,7 +3354,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><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><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="数据类型和判断规则示例" class="animation-figure" 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>
+1 -1
View File
@@ -3364,7 +3364,7 @@
<li>总的来说,我们希望找到一种排序算法,具有高效率、稳定、原地以及正向自适应性等优点。然而,正如其他数据结构和算法一样,没有一种排序算法能够同时满足所有这些条件。在实际应用中,我们需要根据数据的特性来选择合适的排序算法。</li>
<li>图 11-19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。</li>
</ul>
<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><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="排序算法对比" class="animation-figure" 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>