deploy
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
BIN
chapter_sorting/bubble_sort.assets/bubble_sort_overview.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
@@ -1626,7 +1626,7 @@
|
||||
<li>同理,对剩余 <span class="arithmatex">\(n - 1\)</span> 个元素执行「冒泡」,可将第二大元素交换至正确位置,因而待排序元素只剩 <span class="arithmatex">\(n - 2\)</span> 个。</li>
|
||||
<li>以此类推…… <strong>循环 <span class="arithmatex">\(n - 1\)</span> 轮「冒泡」,即可完成整个数组的排序</strong>。</li>
|
||||
</ol>
|
||||
<p><img alt="bubble_sort" src="../bubble_sort.assets/bubble_sort.png" /></p>
|
||||
<p><img alt="bubble_sort_overview" src="../bubble_sort.assets/bubble_sort_overview.png" /></p>
|
||||
<p align="center"> Fig. 冒泡排序流程 </p>
|
||||
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="2:10"><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" /><div class="tabbed-labels"><label for="__tabbed_2_1">Java</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Python</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">JavaScript</label><label for="__tabbed_2_6">TypeScript</label><label for="__tabbed_2_7">C</label><label for="__tabbed_2_8">C#</label><label for="__tabbed_2_9">Swift</label><label for="__tabbed_2_10">Zig</label></div>
|
||||
|
||||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 75 KiB |
@@ -1598,7 +1598,7 @@
|
||||
<li>第 2 轮选取 <strong>第 3 个元素</strong> 为 <code>base</code> ,执行「插入操作」后,<strong>数组前 3 个元素已完成排序</strong>。</li>
|
||||
<li>以此类推……最后一轮选取 <strong>数组尾元素</strong> 为 <code>base</code> ,执行「插入操作」后,<strong>所有元素已完成排序</strong>。</li>
|
||||
</ol>
|
||||
<p><img alt="insertion_sort" src="../insertion_sort.assets/insertion_sort.png" /></p>
|
||||
<p><img alt="insertion_sort_overview" src="../insertion_sort.assets/insertion_sort_overview.png" /></p>
|
||||
<p align="center"> Fig. 插入排序流程 </p>
|
||||
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="1:10"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Java</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Python</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">JavaScript</label><label for="__tabbed_1_6">TypeScript</label><label for="__tabbed_1_7">C</label><label for="__tabbed_1_8">C#</label><label for="__tabbed_1_9">Swift</label><label for="__tabbed_1_10">Zig</label></div>
|
||||
|
||||
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 59 KiB |
BIN
chapter_sorting/merge_sort.assets/merge_sort_overview.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 49 KiB |
@@ -1591,7 +1591,7 @@
|
||||
<li><strong>划分阶段</strong>:通过递归不断 <strong>将数组从中点位置划分开</strong>,将长数组的排序问题转化为短数组的排序问题;</li>
|
||||
<li><strong>合并阶段</strong>:划分到子数组长度为 1 时,开始向上合并,不断将 <strong>左、右两个短排序数组</strong> 合并为 <strong>一个长排序数组</strong>,直至合并至原数组时完成排序;</li>
|
||||
</ol>
|
||||
<p><img alt="merge_sort_preview" src="../merge_sort.assets/merge_sort_preview.png" /></p>
|
||||
<p><img alt="merge_sort_overview" src="../merge_sort.assets/merge_sort_overview.png" /></p>
|
||||
<p align="center"> Fig. 归并排序两阶段:划分与合并 </p>
|
||||
|
||||
<h2 id="1151">11.5.1. 算法流程<a class="headerlink" href="#1151" title="Permanent link">¶</a></h2>
|
||||
|
||||
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 53 KiB |
BIN
chapter_sorting/quick_sort.assets/quick_sort_overview.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
@@ -1891,7 +1891,7 @@
|
||||
<li>直至子数组长度为 1 时 <strong>终止递归</strong>,即可完成对整个数组的排序;</li>
|
||||
</ol>
|
||||
<p>观察发现,快速排序和「二分查找」的原理类似,都是以对数阶的时间复杂度来缩小处理区间。</p>
|
||||
<p><img alt="quick_sort" src="../quick_sort.assets/quick_sort.png" /></p>
|
||||
<p><img alt="quick_sort_overview" src="../quick_sort.assets/quick_sort_overview.png" /></p>
|
||||
<p align="center"> Fig. 快速排序流程 </p>
|
||||
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="3:10"><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" /><div class="tabbed-labels"><label for="__tabbed_3_1">Java</label><label for="__tabbed_3_2">C++</label><label for="__tabbed_3_3">Python</label><label for="__tabbed_3_4">Go</label><label for="__tabbed_3_5">JavaScript</label><label for="__tabbed_3_6">TypeScript</label><label for="__tabbed_3_7">C</label><label for="__tabbed_3_8">C#</label><label for="__tabbed_3_9">Swift</label><label for="__tabbed_3_10">Zig</label></div>
|
||||
|
||||