Skip to content

Commit 704a7a4

Browse files
committed
Deployed 72f6cb3 with MkDocs version: 0.17.3
1 parent 605d8ab commit 704a7a4

File tree

4 files changed

+42
-9
lines changed

4 files changed

+42
-9
lines changed

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

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,13 @@
136136
<li class="toctree-l3"><a href="#_1">归并排序</a></li>
137137

138138

139-
<li class="toctree-l3"><a href="#_2">延伸阅读</a></li>
139+
<li class="toctree-l3"><a href="#_2">时间复杂度</a></li>
140+
141+
142+
<li class="toctree-l3"><a href="#_3">思考题</a></li>
143+
144+
145+
<li class="toctree-l3"><a href="#_4">延伸阅读</a></li>
140146

141147

142148
</ul>
@@ -223,7 +229,8 @@ <h1 id="_1">归并排序</h1>
223229
return new_seq
224230
</code></pre>
225231

226-
<p>注意我们这里有一个函数没实现,就是如何合并两个有序数组 merge_sorted_list</p>
232+
<p>注意我们这里有一个函数没实现,就是如何合并两个有序数组 merge_sorted_list。其实你在纸上画一画,
233+
合并两个有序数组并不难实现。</p>
227234
<p><img alt="" src="../merge_sorted_array.png" /></p>
228235
<pre><code class="py">def merge_sorted_list(sorted_a, sorted_b):
229236
&quot;&quot;&quot; 合并两个有序序列,返回一个新的有序序列
@@ -255,10 +262,26 @@ <h1 id="_1">归并排序</h1>
255262
return new_sorted_seq
256263
</code></pre>
257264

258-
<p>这样就实现了归并排序。</p>
259-
<h1 id="_2">延伸阅读</h1>
265+
<p>这样就实现了归并排序,并且你会发现它返回一个新的数组而不是修改原有数组。</p>
266+
<h1 id="_2">时间复杂度</h1>
267+
<p>我们来简单看下它归并排序的时间复杂度,假设排序 n 个数字时间复杂度是 T(n),这里为了方便假设 n 是 2 的幂</p>
268+
<p>
269+
<script type="math/tex; mode=display">\begin{align}
270+
T(n)= \begin{cases} c, & \text {if $n$ = 1} \\ 2T(n/2)+cn, & \text{if $n$ > 1} \end{cases}
271+
\end{align}</script>
272+
</p>
273+
<p><img alt="" src="../merge_sort_recursion_tree.png" /></p>
274+
<p>总的代价是 <script type="math/tex">cnlg(n)+cn</script> ,忽略常数项可以认为是 O(nlg(n))</p>
275+
<h1 id="_3">思考题</h1>
276+
<ul>
277+
<li>请你完成归并排序的单元测试</li>
278+
<li>这里实现的归并排序是 inplace 的吗?</li>
279+
<li>归并排序是稳定的吗?稳定指的是排序前后相同大小的数字依然保持相对顺序。</li>
280+
</ul>
281+
<h1 id="_4">延伸阅读</h1>
260282
<ul>
261-
<li>《算法导论》第 2 章</li>
283+
<li>《算法导论》第 2 章和第 4 章,你需要了解下『主定理』,以及如何求解形如 <script type="math/tex">T(n)=aT(n/b) + f(n)</script> 的递归式复杂度</li>
284+
<li>了解算法导论上递归式的三种求解方法:代入法,递归树法,主方法</li>
262285
</ul>
263286

264287
</div>
Loading

index.html

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

433433
<!--
434434
MkDocs version : 0.17.3
435-
Build Date UTC : 2018-04-26 16:34:20
435+
Build Date UTC : 2018-04-27 01:04:32
436436
-->

0 commit comments

Comments
 (0)