This commit is contained in:
krahets
2023-08-22 13:50:24 +08:00
parent 77b90cd19b
commit b70b7c9e75
67 changed files with 580 additions and 580 deletions

View File

@@ -3455,7 +3455,7 @@
<h1 id="115">11.5 &nbsp; 快速排序<a class="headerlink" href="#115" title="Permanent link">&para;</a></h1>
<p>「快速排序 quick sort」是一种基于分治策略的排序算法运行高效应用广泛。</p>
<p>快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体来说,哨兵划分的流程如图所示。</p>
<p>快速排序的核心操作是“哨兵划分”,其目标是:选择数组中的某个元素作为“基准数”,将所有小于基准数的元素移到其左侧,而大于基准数的元素移到其右侧。具体来说,哨兵划分的流程如图 11-8 所示。</p>
<ol>
<li>选取数组最左端元素作为基准数,初始化两个指针 <code>i</code><code>j</code> 分别指向数组的两端。</li>
<li>设置一个循环,在每轮中使用 <code>i</code><code>j</code>)分别寻找第一个比基准数大(小)的元素,然后交换这两个元素。</li>
@@ -3492,7 +3492,7 @@
</div>
</div>
</div>
<p align="center">哨兵划分步骤 </p>
<p align="center"> 11-8 &nbsp; 哨兵划分步骤 </p>
<p>哨兵划分完成后,原数组被划分成三部分:左子数组、基准数、右子数组,且满足“左子数组任意元素 <span class="arithmatex">\(\leq\)</span> 基准数 <span class="arithmatex">\(\leq\)</span> 右子数组任意元素”。因此,我们接下来只需对这两个子数组进行排序。</p>
<div class="admonition note">
@@ -3793,14 +3793,14 @@
</div>
</div>
<h2 id="1151">11.5.1 &nbsp; 算法流程<a class="headerlink" href="#1151" title="Permanent link">&para;</a></h2>
<p>快速排序的整体流程如图所示。</p>
<p>快速排序的整体流程如图 11-9 所示。</p>
<ol>
<li>首先,对原数组执行一次“哨兵划分”,得到未排序的左子数组和右子数组。</li>
<li>然后,对左子数组和右子数组分别递归执行“哨兵划分”。</li>
<li>持续递归,直至子数组长度为 1 时终止,从而完成整个数组的排序。</li>
</ol>
<p><img alt="快速排序流程" src="../quick_sort.assets/quick_sort_overview.png" /></p>
<p align="center">快速排序流程 </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">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">JS</label><label for="__tabbed_3_6">TS</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><label for="__tabbed_3_11">Dart</label><label for="__tabbed_3_12">Rust</label></div>
<div class="tabbed-content">