Skip to content

Commit 81a4014

Browse files
committed
Deployed c396945 with MkDocs version: 0.17.3
1 parent e1f9c70 commit 81a4014

File tree

4 files changed

+34
-33
lines changed

4 files changed

+34
-33
lines changed

13_高级排序算法/quick_sort/index.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,18 +224,18 @@
224224

225225
<h1 id="_1">快速排序</h1>
226226
<p>快速排序名字可不是盖的,很多程序语言标准库实现的内置排序都有它的身影,我们就直奔主题吧。
227-
和归并排序一样,快排也是一种分而治之的策略。归并排序把数组递归成只有单个元素的数组,之后再不断两两
227+
和归并排序一样,快排也是一种分而治之(divide and conquer)的策略。归并排序把数组递归成只有单个元素的数组,之后再不断两两
228228
合并,最后得到一个有序数组。这里的递归基本条件就是只包含一个元素的数组,当数组只包含一个元素的时候,我们可以认为它本来就是有序的(当然空数组也不用排序)。</p>
229229
<p>快排的工作过程其实比较简单,三步走:</p>
230230
<ul>
231231
<li>
232-
<p>选择基准值 pivot</p>
232+
<p>选择基准值 pivot 将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为 partition</p>
233233
</li>
234234
<li>
235-
<p>将数组分成两个子数组:小于基准值的元素和大于基准值的元素。这个过程称之为 partition</p>
235+
<p>对这两个子数组进行快速排序。</p>
236236
</li>
237237
<li>
238-
<p>对这两个子数组进行快速排序。</p>
238+
<p>合并结果</p>
239239
</li>
240240
</ul>
241241
<p>根据这个想法我们可以快速写出快排的代码,简直就是在翻译上边的描述:</p>
@@ -260,7 +260,7 @@ <h1 id="_1">快速排序</h1>
260260
<p>是不是很简单,下次面试官让你手写快排你再写不出来就有点不太合适啦。 当然这个实现有两个不好的地方:</p>
261261
<ul>
262262
<li>第一是它需要额外的存储空间,我们想实现 inplace 原地排序。</li>
263-
<li>第二是它的 partion 操作每次都要两次遍历整个数组,我们想改善一下。</li>
263+
<li>第二是它的 partition 操作每次都要两次遍历整个数组,我们想改善一下。</li>
264264
</ul>
265265
<p>这里我们就来优化一下它,实现 inplace 排序并且改善下 partition 操作。新的代码大概如下:</p>
266266
<pre><code class="py">def quicksort_inplace(array, beg, end): # 注意这里我们都用左闭右开区间,end 传入 len(array)
@@ -317,6 +317,7 @@ <h1 id="_3">思考题</h1>
317317
<li>选择基准值如果选不好就可能导致复杂度升高,算导中提到了一种『median of 3』策略,就是说选择 pivot 的时候
318318
从子数组中随机选三个元素,再取它的中位数,你能实现这个想法吗?这里我们的代码很简单地取了第一个元素作为 pivot</li>
319319
<li>利用快排中的 partition 操作,我们还能实现另一个算法,nth_element,快速查找一个无序数组中的第 k 大元素,请你尝试实现它并编写单测</li>
320+
<li>你知道 Python 内置的 sorted 如何实现的吗?请你 Google 相关资料了解下。很多内置的排序都使用了快排的改良版。</li>
320321
</ul>
321322
<h1 id="_4">延伸阅读</h1>
322323
<ul>

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,5 +481,5 @@ <h2 id="_19">本电子书制作和写作方式</h2>
481481

482482
<!--
483483
MkDocs version : 0.17.3
484-
Build Date UTC : 2018-05-16 00:34:57
484+
Build Date UTC : 2018-05-17 00:54:17
485485
-->

0 commit comments

Comments
 (0)