mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-06 04:34:20 +00:00
deploy
This commit is contained in:
@@ -512,6 +512,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -580,12 +582,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -605,7 +627,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -625,7 +647,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -593,12 +595,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -618,7 +640,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -638,7 +660,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3362,9 +3384,10 @@
|
||||
<h2 id="_1">本章内容<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/performance_evaluation/">2.1 算法效率评估</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/time_complexity/">2.2 时间复杂度</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/space_complexity/">2.3 空间复杂度</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/summary/">2.4 小结</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/iteration_and_recursion/">2.2 迭代与递归</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/time_complexity/">2.3 时间复杂度</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/space_complexity/">2.4 空间复杂度</a></li>
|
||||
<li><a href="https://www.hello-algo.com/chapter_computational_complexity/summary/">2.5 小结</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
File diff suppressed because it is too large
Load Diff
@@ -18,7 +18,7 @@
|
||||
<link rel="prev" href="../">
|
||||
|
||||
|
||||
<link rel="next" href="../time_complexity/">
|
||||
<link rel="next" href="../iteration_and_recursion/">
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -631,13 +633,6 @@
|
||||
2.1.2 理论估算
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#213" class="md-nav__link">
|
||||
2.1.3 复杂度的重要性
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -654,12 +649,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -679,7 +694,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -699,7 +714,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3393,13 +3408,6 @@
|
||||
2.1.2 理论估算
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#213" class="md-nav__link">
|
||||
2.1.3 复杂度的重要性
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@@ -3431,31 +3439,37 @@
|
||||
<li><strong>找到问题解法</strong>:算法需要在规定的输入范围内,可靠地求得问题的正确解。</li>
|
||||
<li><strong>寻求最优解法</strong>:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。</li>
|
||||
</ol>
|
||||
<p>因此,在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标,它包括以下两个维度。</p>
|
||||
<p>也就是说,在能够解决问题的前提下,算法效率是衡量算法优劣的主要评价指标,它包括以下两个维度。</p>
|
||||
<ul>
|
||||
<li><strong>时间效率</strong>:算法运行速度的快慢。</li>
|
||||
<li><strong>空间效率</strong>:算法占用内存空间的大小。</li>
|
||||
</ul>
|
||||
<p>简而言之,<strong>我们的目标是设计“既快又省”的数据结构与算法</strong>。而有效地评估算法效率至关重要,因为只有这样我们才能将各种算法进行对比,从而指导算法设计与优化过程。</p>
|
||||
<p>效率评估方法主要分为两种:实际测试和理论估算。</p>
|
||||
<p>效率评估方法主要分为两种:实际测试、理论估算。</p>
|
||||
<h2 id="211">2.1.1 实际测试<a class="headerlink" href="#211" title="Permanent link">¶</a></h2>
|
||||
<p>假设我们现在有算法 <code>A</code> 和算法 <code>B</code> ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真实情况,但也存在较大局限性。</p>
|
||||
<p>一方面,<strong>难以排除测试环境的干扰因素</strong>。硬件配置会影响算法的性能表现。比如在某台计算机中,算法 <code>A</code> 的运行时间比算法 <code>B</code> 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要在各种机器上进行测试,统计平均效率,而这是不现实的。</p>
|
||||
<p>另一方面,<strong>展开完整测试非常耗费资源</strong>。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入数据量较小时,算法 <code>A</code> 的运行时间比算法 <code>B</code> 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为了得到有说服力的结论,我们需要测试各种规模的输入数据,而这样需要耗费大量的计算资源。</p>
|
||||
<h2 id="212">2.1.2 理论估算<a class="headerlink" href="#212" title="Permanent link">¶</a></h2>
|
||||
<p>由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为「渐近复杂度分析 asymptotic complexity analysis」,简称「复杂度分析」。</p>
|
||||
<p>复杂度分析评估的是算法运行所需的时间和空间资源,<strong>它描述了随着输入数据大小的增加,算法所需时间(空间)的增长趋势</strong>。这个定义有些拗口,我们可以将其分为三个重点来理解。</p>
|
||||
<ol>
|
||||
<p>复杂度分析体现算法运行所需的时间(空间)资源与输入数据大小之间的关系。<strong>它描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势</strong>。这个定义有些拗口,我们可以将其分为三个重点来理解。</p>
|
||||
<ul>
|
||||
<li>“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。</li>
|
||||
<li>“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。</li>
|
||||
<li>“增长趋势”表示复杂度分析关注的是算法时间与空间的增长趋势,而非具体的运行时间或占用空间。</li>
|
||||
</ol>
|
||||
<p><strong>复杂度分析克服了实际测试方法的弊端</strong>。首先,它独立于测试环境,分析结果适用于所有运行平台。其次,它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。</p>
|
||||
<p>如果你对复杂度分析的概念仍感到困惑,无须担心,我们会在后续章节中详细介绍。</p>
|
||||
<h2 id="213">2.1.3 复杂度的重要性<a class="headerlink" href="#213" title="Permanent link">¶</a></h2>
|
||||
<p>复杂度分析为我们提供了一把评估算法效率的“标尺”,帮助我们衡量了执行某个算法所需的时间和空间资源,并使我们能够对比不同算法之间的效率。</p>
|
||||
<p>复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太适合作为第 1 章的内容。</p>
|
||||
<p>然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和空间使用情况。因此,在深入学习数据结构与算法之前,<strong>建议你先对复杂度建立初步的了解,以便能够完成简单算法的复杂度分析</strong>。</p>
|
||||
<li>“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间增长的“快慢”。</li>
|
||||
</ul>
|
||||
<p><strong>复杂度分析克服了实际测试方法的弊端</strong>,体现在以下两个方面。</p>
|
||||
<ul>
|
||||
<li>它独立于测试环境,分析结果适用于所有运行平台。</li>
|
||||
<li>它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。</li>
|
||||
</ul>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
<p>如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。</p>
|
||||
</div>
|
||||
<p>复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资源,对比不同算法之间的效率。</p>
|
||||
<p>复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和空间使用情况。</p>
|
||||
<p>综上所述,建议你在深入学习数据结构与算法之前,<strong>先对复杂度分析建立初步的了解,以便能够完成简单算法的复杂度分析</strong>。</p>
|
||||
|
||||
|
||||
|
||||
@@ -3551,13 +3565,13 @@
|
||||
|
||||
|
||||
|
||||
<a href="../time_complexity/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.2 &nbsp; 时间复杂度" rel="next">
|
||||
<a href="../iteration_and_recursion/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.2 &nbsp; 迭代与递归" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.2 迭代与递归
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
|
||||
|
||||
<title>2.3 空间复杂度 - Hello 算法</title>
|
||||
<title>2.4 空间复杂度 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#23" class="md-skip">
|
||||
<a href="#24" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -593,12 +595,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -627,7 +649,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -638,7 +660,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -660,25 +682,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#231" class="md-nav__link">
|
||||
2.3.1 算法相关空间
|
||||
<a href="#241" class="md-nav__link">
|
||||
2.4.1 算法相关空间
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#232" class="md-nav__link">
|
||||
2.3.2 推算方法
|
||||
<a href="#242" class="md-nav__link">
|
||||
2.4.2 推算方法
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#233" class="md-nav__link">
|
||||
2.3.3 常见类型
|
||||
<a href="#243" class="md-nav__link">
|
||||
2.4.3 常见类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.3.3 常见类型">
|
||||
<nav class="md-nav" aria-label="2.4.3 常见类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -722,8 +744,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#234" class="md-nav__link">
|
||||
2.3.4 权衡时间与空间
|
||||
<a href="#244" class="md-nav__link">
|
||||
2.4.4 权衡时间与空间
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -747,7 +769,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3430,25 +3452,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#231" class="md-nav__link">
|
||||
2.3.1 算法相关空间
|
||||
<a href="#241" class="md-nav__link">
|
||||
2.4.1 算法相关空间
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#232" class="md-nav__link">
|
||||
2.3.2 推算方法
|
||||
<a href="#242" class="md-nav__link">
|
||||
2.4.2 推算方法
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#233" class="md-nav__link">
|
||||
2.3.3 常见类型
|
||||
<a href="#243" class="md-nav__link">
|
||||
2.4.3 常见类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.3.3 常见类型">
|
||||
<nav class="md-nav" aria-label="2.4.3 常见类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -3492,8 +3514,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#234" class="md-nav__link">
|
||||
2.3.4 权衡时间与空间
|
||||
<a href="#244" class="md-nav__link">
|
||||
2.4.4 权衡时间与空间
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -3521,9 +3543,9 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="23">2.3 空间复杂度<a class="headerlink" href="#23" title="Permanent link">¶</a></h1>
|
||||
<h1 id="24">2.4 空间复杂度<a class="headerlink" href="#24" title="Permanent link">¶</a></h1>
|
||||
<p>「空间复杂度 space complexity」用于衡量算法占用内存空间随着数据量变大时的增长趋势。这个概念与时间复杂度非常类似,只需将“运行时间”替换为“占用内存空间”。</p>
|
||||
<h2 id="231">2.3.1 算法相关空间<a class="headerlink" href="#231" title="Permanent link">¶</a></h2>
|
||||
<h2 id="241">2.4.1 算法相关空间<a class="headerlink" href="#241" title="Permanent link">¶</a></h2>
|
||||
<p>算法在运行过程中使用的内存空间主要包括以下几种。</p>
|
||||
<ul>
|
||||
<li><strong>输入空间</strong>:用于存储算法的输入数据。</li>
|
||||
@@ -3539,7 +3561,7 @@
|
||||
</ul>
|
||||
<p>在分析一段程序的空间复杂度时,<strong>我们通常统计暂存数据、栈帧空间和输出数据三部分</strong>。</p>
|
||||
<p><img alt="算法使用的相关空间" src="../space_complexity.assets/space_types.png" /></p>
|
||||
<p align="center"> 图 2-9 算法使用的相关空间 </p>
|
||||
<p align="center"> 图 2-15 算法使用的相关空间 </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">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">JS</label><label for="__tabbed_1_6">TS</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><label for="__tabbed_1_11">Dart</label><label for="__tabbed_1_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
@@ -3785,7 +3807,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="232">2.3.2 推算方法<a class="headerlink" href="#232" title="Permanent link">¶</a></h2>
|
||||
<h2 id="242">2.4.2 推算方法<a class="headerlink" href="#242" title="Permanent link">¶</a></h2>
|
||||
<p>空间复杂度的推算方法与时间复杂度大致相同,只需将统计对象从“操作数量”转为“使用空间大小”。</p>
|
||||
<p>而与时间复杂度不同的是,<strong>我们通常只关注最差空间复杂度</strong>。这是因为内存空间是一项硬性要求,我们必须确保在所有输入数据下都有足够的内存空间预留。</p>
|
||||
<p>观察以下代码,最差空间复杂度中的“最差”有两层含义。</p>
|
||||
@@ -4106,8 +4128,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="233">2.3.3 常见类型<a class="headerlink" href="#233" title="Permanent link">¶</a></h2>
|
||||
<p>设输入数据大小为 <span class="arithmatex">\(n\)</span> ,图 2-10 展示了常见的空间复杂度类型(从低到高排列)。</p>
|
||||
<h2 id="243">2.4.3 常见类型<a class="headerlink" href="#243" title="Permanent link">¶</a></h2>
|
||||
<p>设输入数据大小为 <span class="arithmatex">\(n\)</span> ,图 2-16 展示了常见的空间复杂度类型(从低到高排列)。</p>
|
||||
<div class="arithmatex">\[
|
||||
\begin{aligned}
|
||||
O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
@@ -4115,7 +4137,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
\end{aligned}
|
||||
\]</div>
|
||||
<p><img alt="常见的空间复杂度类型" src="../space_complexity.assets/space_complexity_common_types.png" /></p>
|
||||
<p align="center"> 图 2-10 常见的空间复杂度类型 </p>
|
||||
<p align="center"> 图 2-16 常见的空间复杂度类型 </p>
|
||||
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
@@ -4675,7 +4697,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>如图 2-11 所示,此函数的递归深度为 <span class="arithmatex">\(n\)</span> ,即同时存在 <span class="arithmatex">\(n\)</span> 个未返回的 <code>linear_recur()</code> 函数,使用 <span class="arithmatex">\(O(n)\)</span> 大小的栈帧空间:</p>
|
||||
<p>如图 2-17 所示,此函数的递归深度为 <span class="arithmatex">\(n\)</span> ,即同时存在 <span class="arithmatex">\(n\)</span> 个未返回的 <code>linear_recur()</code> 函数,使用 <span class="arithmatex">\(O(n)\)</span> 大小的栈帧空间:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="6:12"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><input id="__tabbed_6_3" name="__tabbed_6" type="radio" /><input id="__tabbed_6_4" name="__tabbed_6" type="radio" /><input id="__tabbed_6_5" name="__tabbed_6" type="radio" /><input id="__tabbed_6_6" name="__tabbed_6" type="radio" /><input id="__tabbed_6_7" name="__tabbed_6" type="radio" /><input id="__tabbed_6_8" name="__tabbed_6" type="radio" /><input id="__tabbed_6_9" name="__tabbed_6" type="radio" /><input id="__tabbed_6_10" name="__tabbed_6" type="radio" /><input id="__tabbed_6_11" name="__tabbed_6" type="radio" /><input id="__tabbed_6_12" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">Java</label><label for="__tabbed_6_2">C++</label><label for="__tabbed_6_3">Python</label><label for="__tabbed_6_4">Go</label><label for="__tabbed_6_5">JS</label><label for="__tabbed_6_6">TS</label><label for="__tabbed_6_7">C</label><label for="__tabbed_6_8">C#</label><label for="__tabbed_6_9">Swift</label><label for="__tabbed_6_10">Zig</label><label for="__tabbed_6_11">Dart</label><label for="__tabbed_6_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -4796,7 +4818,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="递归函数产生的线性阶空间复杂度" src="../space_complexity.assets/space_complexity_recursive_linear.png" /></p>
|
||||
<p align="center"> 图 2-11 递归函数产生的线性阶空间复杂度 </p>
|
||||
<p align="center"> 图 2-17 递归函数产生的线性阶空间复杂度 </p>
|
||||
|
||||
<h3 id="3-on2">3. 平方阶 <span class="arithmatex">\(O(n^2)\)</span><a class="headerlink" href="#3-on2" title="Permanent link">¶</a></h3>
|
||||
<p>平方阶常见于矩阵和图,元素数量与 <span class="arithmatex">\(n\)</span> 成平方关系:</p>
|
||||
@@ -4992,7 +5014,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>如图 2-12 所示,该函数的递归深度为 <span class="arithmatex">\(n\)</span> ,在每个递归函数中都初始化了一个数组,长度分别为 <span class="arithmatex">\(n, n-1, n-2, ..., 2, 1\)</span> ,平均长度为 <span class="arithmatex">\(n / 2\)</span> ,因此总体占用 <span class="arithmatex">\(O(n^2)\)</span> 空间:</p>
|
||||
<p>如图 2-18 所示,该函数的递归深度为 <span class="arithmatex">\(n\)</span> ,在每个递归函数中都初始化了一个数组,长度分别为 <span class="arithmatex">\(n, n-1, n-2, ..., 2, 1\)</span> ,平均长度为 <span class="arithmatex">\(n / 2\)</span> ,因此总体占用 <span class="arithmatex">\(O(n^2)\)</span> 空间:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="8:12"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><input id="__tabbed_8_3" name="__tabbed_8" type="radio" /><input id="__tabbed_8_4" name="__tabbed_8" type="radio" /><input id="__tabbed_8_5" name="__tabbed_8" type="radio" /><input id="__tabbed_8_6" name="__tabbed_8" type="radio" /><input id="__tabbed_8_7" name="__tabbed_8" type="radio" /><input id="__tabbed_8_8" name="__tabbed_8" type="radio" /><input id="__tabbed_8_9" name="__tabbed_8" type="radio" /><input id="__tabbed_8_10" name="__tabbed_8" type="radio" /><input id="__tabbed_8_11" name="__tabbed_8" type="radio" /><input id="__tabbed_8_12" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">Java</label><label for="__tabbed_8_2">C++</label><label for="__tabbed_8_3">Python</label><label for="__tabbed_8_4">Go</label><label for="__tabbed_8_5">JS</label><label for="__tabbed_8_6">TS</label><label for="__tabbed_8_7">C</label><label for="__tabbed_8_8">C#</label><label for="__tabbed_8_9">Swift</label><label for="__tabbed_8_10">Zig</label><label for="__tabbed_8_11">Dart</label><label for="__tabbed_8_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -5131,10 +5153,10 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="递归函数产生的平方阶空间复杂度" src="../space_complexity.assets/space_complexity_recursive_quadratic.png" /></p>
|
||||
<p align="center"> 图 2-12 递归函数产生的平方阶空间复杂度 </p>
|
||||
<p align="center"> 图 2-18 递归函数产生的平方阶空间复杂度 </p>
|
||||
|
||||
<h3 id="4-o2n">4. 指数阶 <span class="arithmatex">\(O(2^n)\)</span><a class="headerlink" href="#4-o2n" title="Permanent link">¶</a></h3>
|
||||
<p>指数阶常见于二叉树。观察图 2-13 ,高度为 <span class="arithmatex">\(n\)</span> 的“满二叉树”的节点数量为 <span class="arithmatex">\(2^n - 1\)</span> ,占用 <span class="arithmatex">\(O(2^n)\)</span> 空间:</p>
|
||||
<p>指数阶常见于二叉树。观察图 2-19 ,高度为 <span class="arithmatex">\(n\)</span> 的“满二叉树”的节点数量为 <span class="arithmatex">\(2^n - 1\)</span> ,占用 <span class="arithmatex">\(O(2^n)\)</span> 空间:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="9:12"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><input id="__tabbed_9_3" name="__tabbed_9" type="radio" /><input id="__tabbed_9_4" name="__tabbed_9" type="radio" /><input id="__tabbed_9_5" name="__tabbed_9" type="radio" /><input id="__tabbed_9_6" name="__tabbed_9" type="radio" /><input id="__tabbed_9_7" name="__tabbed_9" type="radio" /><input id="__tabbed_9_8" name="__tabbed_9" type="radio" /><input id="__tabbed_9_9" name="__tabbed_9" type="radio" /><input id="__tabbed_9_10" name="__tabbed_9" type="radio" /><input id="__tabbed_9_11" name="__tabbed_9" type="radio" /><input id="__tabbed_9_12" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">Java</label><label for="__tabbed_9_2">C++</label><label for="__tabbed_9_3">Python</label><label for="__tabbed_9_4">Go</label><label for="__tabbed_9_5">JS</label><label for="__tabbed_9_6">TS</label><label for="__tabbed_9_7">C</label><label for="__tabbed_9_8">C#</label><label for="__tabbed_9_9">Swift</label><label for="__tabbed_9_10">Zig</label><label for="__tabbed_9_11">Dart</label><label for="__tabbed_9_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -5280,12 +5302,12 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="满二叉树产生的指数阶空间复杂度" src="../space_complexity.assets/space_complexity_exponential.png" /></p>
|
||||
<p align="center"> 图 2-13 满二叉树产生的指数阶空间复杂度 </p>
|
||||
<p align="center"> 图 2-19 满二叉树产生的指数阶空间复杂度 </p>
|
||||
|
||||
<h3 id="5-olog-n">5. 对数阶 <span class="arithmatex">\(O(\log n)\)</span><a class="headerlink" href="#5-olog-n" title="Permanent link">¶</a></h3>
|
||||
<p>对数阶常见于分治算法。例如归并排序,输入长度为 <span class="arithmatex">\(n\)</span> 的数组,每轮递归将数组从中点划分为两半,形成高度为 <span class="arithmatex">\(\log n\)</span> 的递归树,使用 <span class="arithmatex">\(O(\log n)\)</span> 栈帧空间。</p>
|
||||
<p>再例如将数字转化为字符串,输入一个正整数 <span class="arithmatex">\(n\)</span> ,它的位数为 <span class="arithmatex">\(\log_{10} n + 1\)</span> ,即对应字符串长度为 <span class="arithmatex">\(\log_{10} n + 1\)</span> ,因此空间复杂度为 <span class="arithmatex">\(O(\log_{10} n + 1) = O(\log n)\)</span> 。</p>
|
||||
<h2 id="234">2.3.4 权衡时间与空间<a class="headerlink" href="#234" title="Permanent link">¶</a></h2>
|
||||
<h2 id="244">2.4.4 权衡时间与空间<a class="headerlink" href="#244" title="Permanent link">¶</a></h2>
|
||||
<p>理想情况下,我们希望算法的时间复杂度和空间复杂度都能达到最优。然而在实际情况中,同时优化时间复杂度和空间复杂度通常是非常困难的。</p>
|
||||
<p><strong>降低时间复杂度通常需要以提升空间复杂度为代价,反之亦然</strong>。我们将牺牲内存空间来提升算法运行速度的思路称为“以空间换时间”;反之,则称为“以时间换空间”。</p>
|
||||
<p>选择哪种思路取决于我们更看重哪个方面。在大多数情况下,时间比空间更宝贵,因此“以空间换时间”通常是更常用的策略。当然,在数据量很大的情况下,控制空间复杂度也是非常重要的。</p>
|
||||
@@ -5367,7 +5389,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../time_complexity/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.2 &nbsp; 时间复杂度" rel="prev">
|
||||
<a href="../time_complexity/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.3 &nbsp; 时间复杂度" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
@@ -5377,20 +5399,20 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.4 &nbsp; 小结" rel="next">
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.5 &nbsp; 小结" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
|
||||
|
||||
<title>2.4 小结 - Hello 算法</title>
|
||||
<title>2.5 小结 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#24" class="md-skip">
|
||||
<a href="#25" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -593,12 +595,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -618,7 +640,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -647,7 +669,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -658,7 +680,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -680,8 +702,8 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#241-q-a" class="md-nav__link">
|
||||
2.4.1 Q & A
|
||||
<a href="#251-q-a" class="md-nav__link">
|
||||
2.5.1 Q & A
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -3368,8 +3390,8 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#241-q-a" class="md-nav__link">
|
||||
2.4.1 Q & A
|
||||
<a href="#251-q-a" class="md-nav__link">
|
||||
2.5.1 Q & A
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -3397,7 +3419,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="24">2.4 小结<a class="headerlink" href="#24" title="Permanent link">¶</a></h1>
|
||||
<h1 id="25">2.5 小结<a class="headerlink" href="#25" title="Permanent link">¶</a></h1>
|
||||
<p><strong>算法效率评估</strong></p>
|
||||
<ul>
|
||||
<li>时间效率和空间效率是衡量算法优劣的两个主要评价指标。</li>
|
||||
@@ -3420,7 +3442,7 @@
|
||||
<li>我们通常只关注最差空间复杂度,即统计算法在最差输入数据和最差运行时间点下的空间复杂度。</li>
|
||||
<li>常见空间复杂度从小到大排列有 <span class="arithmatex">\(O(1)\)</span> 、<span class="arithmatex">\(O(\log n)\)</span> 、<span class="arithmatex">\(O(n)\)</span> 、<span class="arithmatex">\(O(n^2)\)</span> 、<span class="arithmatex">\(O(2^n)\)</span> 等。</li>
|
||||
</ul>
|
||||
<h2 id="241-q-a">2.4.1 Q & A<a class="headerlink" href="#241-q-a" title="Permanent link">¶</a></h2>
|
||||
<h2 id="251-q-a">2.5.1 Q & A<a class="headerlink" href="#251-q-a" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition question">
|
||||
<p class="admonition-title">尾递归的空间复杂度是 <span class="arithmatex">\(O(1)\)</span> 吗?</p>
|
||||
<p>理论上,尾递归函数的空间复杂度可以被优化至 <span class="arithmatex">\(O(1)\)</span> 。不过绝大多数编程语言(例如 Java 、Python 、C++ 、Go 、C# 等)都不支持自动优化尾递归,因此通常认为空间复杂度是 <span class="arithmatex">\(O(n)\)</span> 。</p>
|
||||
@@ -3519,7 +3541,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../space_complexity/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.3 &nbsp; 空间复杂度" rel="prev">
|
||||
<a href="../space_complexity/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.4 &nbsp; 空间复杂度" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
@@ -3529,7 +3551,7 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<link rel="canonical" href="https://www.hello-algo.com/chapter_computational_complexity/time_complexity/">
|
||||
|
||||
|
||||
<link rel="prev" href="../performance_evaluation/">
|
||||
<link rel="prev" href="../iteration_and_recursion/">
|
||||
|
||||
|
||||
<link rel="next" href="../space_complexity/">
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
|
||||
|
||||
<title>2.2 时间复杂度 - Hello 算法</title>
|
||||
<title>2.3 时间复杂度 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#22" class="md-skip">
|
||||
<a href="#23" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -592,6 +594,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -607,7 +629,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -618,7 +640,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -640,25 +662,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#221" class="md-nav__link">
|
||||
2.2.1 统计时间增长趋势
|
||||
<a href="#231" class="md-nav__link">
|
||||
2.3.1 统计时间增长趋势
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#222" class="md-nav__link">
|
||||
2.2.2 函数渐近上界
|
||||
<a href="#232" class="md-nav__link">
|
||||
2.3.2 函数渐近上界
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#223" class="md-nav__link">
|
||||
2.2.3 推算方法
|
||||
<a href="#233" class="md-nav__link">
|
||||
2.3.3 推算方法
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.2.3 推算方法">
|
||||
<nav class="md-nav" aria-label="2.3.3 推算方法">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -681,11 +703,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#224" class="md-nav__link">
|
||||
2.2.4 常见类型
|
||||
<a href="#234" class="md-nav__link">
|
||||
2.3.4 常见类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.2.4 常见类型">
|
||||
<nav class="md-nav" aria-label="2.3.4 常见类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -743,8 +765,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#225" class="md-nav__link">
|
||||
2.2.5 最差、最佳、平均时间复杂度
|
||||
<a href="#235" class="md-nav__link">
|
||||
2.3.5 最差、最佳、平均时间复杂度
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -768,7 +790,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -788,7 +810,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3471,25 +3493,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#221" class="md-nav__link">
|
||||
2.2.1 统计时间增长趋势
|
||||
<a href="#231" class="md-nav__link">
|
||||
2.3.1 统计时间增长趋势
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#222" class="md-nav__link">
|
||||
2.2.2 函数渐近上界
|
||||
<a href="#232" class="md-nav__link">
|
||||
2.3.2 函数渐近上界
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#223" class="md-nav__link">
|
||||
2.2.3 推算方法
|
||||
<a href="#233" class="md-nav__link">
|
||||
2.3.3 推算方法
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.2.3 推算方法">
|
||||
<nav class="md-nav" aria-label="2.3.3 推算方法">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -3512,11 +3534,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#224" class="md-nav__link">
|
||||
2.2.4 常见类型
|
||||
<a href="#234" class="md-nav__link">
|
||||
2.3.4 常见类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2.2.4 常见类型">
|
||||
<nav class="md-nav" aria-label="2.3.4 常见类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -3574,8 +3596,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#225" class="md-nav__link">
|
||||
2.2.5 最差、最佳、平均时间复杂度
|
||||
<a href="#235" class="md-nav__link">
|
||||
2.3.5 最差、最佳、平均时间复杂度
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -3603,7 +3625,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="22">2.2 时间复杂度<a class="headerlink" href="#22" title="Permanent link">¶</a></h1>
|
||||
<h1 id="23">2.3 时间复杂度<a class="headerlink" href="#23" title="Permanent link">¶</a></h1>
|
||||
<p>运行时间可以直观且准确地反映算法的效率。如果我们想要准确预估一段代码的运行时间,应该如何操作呢?</p>
|
||||
<ol>
|
||||
<li><strong>确定运行平台</strong>,包括硬件配置、编程语言、系统环境等,这些因素都会影响代码的运行效率。</li>
|
||||
@@ -3765,7 +3787,7 @@
|
||||
1 + 1 + 10 + (1 + 5) \times n = 6n + 12
|
||||
\]</div>
|
||||
<p>但实际上,<strong>统计算法的运行时间既不合理也不现实</strong>。首先,我们不希望将预估时间和运行平台绑定,因为算法需要在各种不同的平台上运行。其次,我们很难获知每种操作的运行时间,这给预估过程带来了极大的难度。</p>
|
||||
<h2 id="221">2.2.1 统计时间增长趋势<a class="headerlink" href="#221" title="Permanent link">¶</a></h2>
|
||||
<h2 id="231">2.3.1 统计时间增长趋势<a class="headerlink" href="#231" title="Permanent link">¶</a></h2>
|
||||
<p>时间复杂度分析统计的不是算法运行时间,<strong>而是算法运行时间随着数据量变大时的增长趋势</strong>。</p>
|
||||
<p>“时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 <span class="arithmatex">\(n\)</span> ,给定三个算法函数 <code>A</code> 、 <code>B</code> 和 <code>C</code> :</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">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">JS</label><label for="__tabbed_2_6">TS</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><label for="__tabbed_2_11">Dart</label><label for="__tabbed_2_12">Rust</label></div>
|
||||
@@ -3982,14 +4004,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>图 2-1 展示了以上三个算法函数的时间复杂度。</p>
|
||||
<p>图 2-7 展示了以上三个算法函数的时间复杂度。</p>
|
||||
<ul>
|
||||
<li>算法 <code>A</code> 只有 <span class="arithmatex">\(1\)</span> 个打印操作,算法运行时间不随着 <span class="arithmatex">\(n\)</span> 增大而增长。我们称此算法的时间复杂度为“常数阶”。</li>
|
||||
<li>算法 <code>B</code> 中的打印操作需要循环 <span class="arithmatex">\(n\)</span> 次,算法运行时间随着 <span class="arithmatex">\(n\)</span> 增大呈线性增长。此算法的时间复杂度被称为“线性阶”。</li>
|
||||
<li>算法 <code>C</code> 中的打印操作需要循环 <span class="arithmatex">\(1000000\)</span> 次,虽然运行时间很长,但它与输入数据大小 <span class="arithmatex">\(n\)</span> 无关。因此 <code>C</code> 的时间复杂度和 <code>A</code> 相同,仍为“常数阶”。</li>
|
||||
</ul>
|
||||
<p><img alt="算法 A 、B 和 C 的时间增长趋势" src="../time_complexity.assets/time_complexity_simple_example.png" /></p>
|
||||
<p align="center"> 图 2-1 算法 A 、B 和 C 的时间增长趋势 </p>
|
||||
<p align="center"> 图 2-7 算法 A 、B 和 C 的时间增长趋势 </p>
|
||||
|
||||
<p>相较于直接统计算法运行时间,时间复杂度分析有哪些特点呢?</p>
|
||||
<ul>
|
||||
@@ -3997,7 +4019,7 @@
|
||||
<li><strong>时间复杂度的推算方法更简便</strong>。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将“计算操作的运行时间的统计”简化为“计算操作的数量的统计”,这样以来估算难度就大大降低了。</li>
|
||||
<li><strong>时间复杂度也存在一定的局限性</strong>。例如,尽管算法 <code>A</code> 和 <code>C</code> 的时间复杂度相同,但实际运行时间差别很大。同样,尽管算法 <code>B</code> 的时间复杂度比 <code>C</code> 高,但在输入数据大小 <span class="arithmatex">\(n\)</span> 较小时,算法 <code>B</code> 明显优于算法 <code>C</code> 。在这些情况下,我们很难仅凭时间复杂度判断算法效率的高低。当然,尽管存在上述问题,复杂度分析仍然是评判算法效率最有效且常用的方法。</li>
|
||||
</ul>
|
||||
<h2 id="222">2.2.2 函数渐近上界<a class="headerlink" href="#222" title="Permanent link">¶</a></h2>
|
||||
<h2 id="232">2.3.2 函数渐近上界<a class="headerlink" href="#232" title="Permanent link">¶</a></h2>
|
||||
<p>给定一个输入大小为 <span class="arithmatex">\(n\)</span> 的函数:</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">
|
||||
@@ -4156,11 +4178,11 @@ $$
|
||||
T(n) = O(f(n))
|
||||
$$</p>
|
||||
</div>
|
||||
<p>如图 2-2 所示,计算渐近上界就是寻找一个函数 <span class="arithmatex">\(f(n)\)</span> ,使得当 <span class="arithmatex">\(n\)</span> 趋向于无穷大时,<span class="arithmatex">\(T(n)\)</span> 和 <span class="arithmatex">\(f(n)\)</span> 处于相同的增长级别,仅相差一个常数项 <span class="arithmatex">\(c\)</span> 的倍数。</p>
|
||||
<p>如图 2-8 所示,计算渐近上界就是寻找一个函数 <span class="arithmatex">\(f(n)\)</span> ,使得当 <span class="arithmatex">\(n\)</span> 趋向于无穷大时,<span class="arithmatex">\(T(n)\)</span> 和 <span class="arithmatex">\(f(n)\)</span> 处于相同的增长级别,仅相差一个常数项 <span class="arithmatex">\(c\)</span> 的倍数。</p>
|
||||
<p><img alt="函数的渐近上界" src="../time_complexity.assets/asymptotic_upper_bound.png" /></p>
|
||||
<p align="center"> 图 2-2 函数的渐近上界 </p>
|
||||
<p align="center"> 图 2-8 函数的渐近上界 </p>
|
||||
|
||||
<h2 id="223">2.2.3 推算方法<a class="headerlink" href="#223" title="Permanent link">¶</a></h2>
|
||||
<h2 id="233">2.3.3 推算方法<a class="headerlink" href="#233" title="Permanent link">¶</a></h2>
|
||||
<p>渐近上界的数学味儿有点重,如果你感觉没有完全理解,也无须担心。因为在实际使用中,我们只需要掌握推算方法,数学意义就可以逐渐领悟。</p>
|
||||
<p>根据定义,确定 <span class="arithmatex">\(f(n)\)</span> 之后,我们便可得到时间复杂度 <span class="arithmatex">\(O(f(n))\)</span> 。那么如何确定渐近上界 <span class="arithmatex">\(f(n)\)</span> 呢?总体分为两步:首先统计操作数量,然后判断渐近上界。</p>
|
||||
<h3 id="1">1. 第一步:统计操作数量<a class="headerlink" href="#1" title="Permanent link">¶</a></h3>
|
||||
@@ -4408,8 +4430,8 @@ T(n) & = n^2 + n & \text{偷懒统计 (o.O)}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 id="224">2.2.4 常见类型<a class="headerlink" href="#224" title="Permanent link">¶</a></h2>
|
||||
<p>设输入数据大小为 <span class="arithmatex">\(n\)</span> ,常见的时间复杂度类型如图 2-3 所示(按照从低到高的顺序排列)。</p>
|
||||
<h2 id="234">2.3.4 常见类型<a class="headerlink" href="#234" title="Permanent link">¶</a></h2>
|
||||
<p>设输入数据大小为 <span class="arithmatex">\(n\)</span> ,常见的时间复杂度类型如图 2-9 所示(按照从低到高的顺序排列)。</p>
|
||||
<div class="arithmatex">\[
|
||||
\begin{aligned}
|
||||
O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!) \newline
|
||||
@@ -4417,7 +4439,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
\end{aligned}
|
||||
\]</div>
|
||||
<p><img alt="常见的时间复杂度类型" src="../time_complexity.assets/time_complexity_common_types.png" /></p>
|
||||
<p align="center"> 图 2-3 常见的时间复杂度类型 </p>
|
||||
<p align="center"> 图 2-9 常见的时间复杂度类型 </p>
|
||||
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
@@ -5020,9 +5042,9 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>图 2-4 对比了常数阶、线性阶和平方阶三种时间复杂度。</p>
|
||||
<p>图 2-10 对比了常数阶、线性阶和平方阶三种时间复杂度。</p>
|
||||
<p><img alt="常数阶、线性阶和平方阶的时间复杂度" src="../time_complexity.assets/time_complexity_constant_linear_quadratic.png" /></p>
|
||||
<p align="center"> 图 2-4 常数阶、线性阶和平方阶的时间复杂度 </p>
|
||||
<p align="center"> 图 2-10 常数阶、线性阶和平方阶的时间复杂度 </p>
|
||||
|
||||
<p>以冒泡排序为例,外层循环执行 <span class="arithmatex">\(n - 1\)</span> 次,内层循环执行 <span class="arithmatex">\(n-1, n-2, \dots, 2, 1\)</span> 次,平均为 <span class="arithmatex">\(n / 2\)</span> 次,因此时间复杂度为 <span class="arithmatex">\(O((n - 1) n / 2) = O(n^2)\)</span> 。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="9:12"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><input id="__tabbed_9_3" name="__tabbed_9" type="radio" /><input id="__tabbed_9_4" name="__tabbed_9" type="radio" /><input id="__tabbed_9_5" name="__tabbed_9" type="radio" /><input id="__tabbed_9_6" name="__tabbed_9" type="radio" /><input id="__tabbed_9_7" name="__tabbed_9" type="radio" /><input id="__tabbed_9_8" name="__tabbed_9" type="radio" /><input id="__tabbed_9_9" name="__tabbed_9" type="radio" /><input id="__tabbed_9_10" name="__tabbed_9" type="radio" /><input id="__tabbed_9_11" name="__tabbed_9" type="radio" /><input id="__tabbed_9_12" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">Java</label><label for="__tabbed_9_2">C++</label><label for="__tabbed_9_3">Python</label><label for="__tabbed_9_4">Go</label><label for="__tabbed_9_5">JS</label><label for="__tabbed_9_6">TS</label><label for="__tabbed_9_7">C</label><label for="__tabbed_9_8">C#</label><label for="__tabbed_9_9">Swift</label><label for="__tabbed_9_10">Zig</label><label for="__tabbed_9_11">Dart</label><label for="__tabbed_9_12">Rust</label></div>
|
||||
@@ -5279,7 +5301,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
</div>
|
||||
<h3 id="4-o2n">4. 指数阶 <span class="arithmatex">\(O(2^n)\)</span><a class="headerlink" href="#4-o2n" title="Permanent link">¶</a></h3>
|
||||
<p>生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为 <span class="arithmatex">\(1\)</span> 个细胞,分裂一轮后变为 <span class="arithmatex">\(2\)</span> 个,分裂两轮后变为 <span class="arithmatex">\(4\)</span> 个,以此类推,分裂 <span class="arithmatex">\(n\)</span> 轮后有 <span class="arithmatex">\(2^n\)</span> 个细胞。</p>
|
||||
<p>图 2-5 和以下代码模拟了细胞分裂的过程,时间复杂度为 <span class="arithmatex">\(O(2^n)\)</span> 。</p>
|
||||
<p>图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 <span class="arithmatex">\(O(2^n)\)</span> 。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="10:12"><input checked="checked" id="__tabbed_10_1" name="__tabbed_10" type="radio" /><input id="__tabbed_10_2" name="__tabbed_10" type="radio" /><input id="__tabbed_10_3" name="__tabbed_10" type="radio" /><input id="__tabbed_10_4" name="__tabbed_10" type="radio" /><input id="__tabbed_10_5" name="__tabbed_10" type="radio" /><input id="__tabbed_10_6" name="__tabbed_10" type="radio" /><input id="__tabbed_10_7" name="__tabbed_10" type="radio" /><input id="__tabbed_10_8" name="__tabbed_10" type="radio" /><input id="__tabbed_10_9" name="__tabbed_10" type="radio" /><input id="__tabbed_10_10" name="__tabbed_10" type="radio" /><input id="__tabbed_10_11" name="__tabbed_10" type="radio" /><input id="__tabbed_10_12" name="__tabbed_10" type="radio" /><div class="tabbed-labels"><label for="__tabbed_10_1">Java</label><label for="__tabbed_10_2">C++</label><label for="__tabbed_10_3">Python</label><label for="__tabbed_10_4">Go</label><label for="__tabbed_10_5">JS</label><label for="__tabbed_10_6">TS</label><label for="__tabbed_10_7">C</label><label for="__tabbed_10_8">C#</label><label for="__tabbed_10_9">Swift</label><label for="__tabbed_10_10">Zig</label><label for="__tabbed_10_11">Dart</label><label for="__tabbed_10_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -5483,7 +5505,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="指数阶的时间复杂度" src="../time_complexity.assets/time_complexity_exponential.png" /></p>
|
||||
<p align="center"> 图 2-5 指数阶的时间复杂度 </p>
|
||||
<p align="center"> 图 2-11 指数阶的时间复杂度 </p>
|
||||
|
||||
<p>在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 <span class="arithmatex">\(n\)</span> 次分裂后停止:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="11:12"><input checked="checked" id="__tabbed_11_1" name="__tabbed_11" type="radio" /><input id="__tabbed_11_2" name="__tabbed_11" type="radio" /><input id="__tabbed_11_3" name="__tabbed_11" type="radio" /><input id="__tabbed_11_4" name="__tabbed_11" type="radio" /><input id="__tabbed_11_5" name="__tabbed_11" type="radio" /><input id="__tabbed_11_6" name="__tabbed_11" type="radio" /><input id="__tabbed_11_7" name="__tabbed_11" type="radio" /><input id="__tabbed_11_8" name="__tabbed_11" type="radio" /><input id="__tabbed_11_9" name="__tabbed_11" type="radio" /><input id="__tabbed_11_10" name="__tabbed_11" type="radio" /><input id="__tabbed_11_11" name="__tabbed_11" type="radio" /><input id="__tabbed_11_12" name="__tabbed_11" type="radio" /><div class="tabbed-labels"><label for="__tabbed_11_1">Java</label><label for="__tabbed_11_2">C++</label><label for="__tabbed_11_3">Python</label><label for="__tabbed_11_4">Go</label><label for="__tabbed_11_5">JS</label><label for="__tabbed_11_6">TS</label><label for="__tabbed_11_7">C</label><label for="__tabbed_11_8">C#</label><label for="__tabbed_11_9">Swift</label><label for="__tabbed_11_10">Zig</label><label for="__tabbed_11_11">Dart</label><label for="__tabbed_11_12">Rust</label></div>
|
||||
@@ -5598,7 +5620,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
<p>指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心等算法来解决。</p>
|
||||
<h3 id="5-olog-n">5. 对数阶 <span class="arithmatex">\(O(\log n)\)</span><a class="headerlink" href="#5-olog-n" title="Permanent link">¶</a></h3>
|
||||
<p>与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 <span class="arithmatex">\(n\)</span> ,由于每轮缩减到一半,因此循环次数是 <span class="arithmatex">\(\log_2 n\)</span> ,即 <span class="arithmatex">\(2^n\)</span> 的反函数。</p>
|
||||
<p>图 2-6 和以下代码模拟了“每轮缩减到一半”的过程,时间复杂度为 <span class="arithmatex">\(O(\log_2 n)\)</span> ,简记为 <span class="arithmatex">\(O(\log n)\)</span> 。</p>
|
||||
<p>图 2-12 和以下代码模拟了“每轮缩减到一半”的过程,时间复杂度为 <span class="arithmatex">\(O(\log_2 n)\)</span> ,简记为 <span class="arithmatex">\(O(\log n)\)</span> 。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="12:12"><input checked="checked" id="__tabbed_12_1" name="__tabbed_12" type="radio" /><input id="__tabbed_12_2" name="__tabbed_12" type="radio" /><input id="__tabbed_12_3" name="__tabbed_12" type="radio" /><input id="__tabbed_12_4" name="__tabbed_12" type="radio" /><input id="__tabbed_12_5" name="__tabbed_12" type="radio" /><input id="__tabbed_12_6" name="__tabbed_12" type="radio" /><input id="__tabbed_12_7" name="__tabbed_12" type="radio" /><input id="__tabbed_12_8" name="__tabbed_12" type="radio" /><input id="__tabbed_12_9" name="__tabbed_12" type="radio" /><input id="__tabbed_12_10" name="__tabbed_12" type="radio" /><input id="__tabbed_12_11" name="__tabbed_12" type="radio" /><input id="__tabbed_12_12" name="__tabbed_12" type="radio" /><div class="tabbed-labels"><label for="__tabbed_12_1">Java</label><label for="__tabbed_12_2">C++</label><label for="__tabbed_12_3">Python</label><label for="__tabbed_12_4">Go</label><label for="__tabbed_12_5">JS</label><label for="__tabbed_12_6">TS</label><label for="__tabbed_12_7">C</label><label for="__tabbed_12_8">C#</label><label for="__tabbed_12_9">Swift</label><label for="__tabbed_12_10">Zig</label><label for="__tabbed_12_11">Dart</label><label for="__tabbed_12_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -5749,7 +5771,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="对数阶的时间复杂度" src="../time_complexity.assets/time_complexity_logarithmic.png" /></p>
|
||||
<p align="center"> 图 2-6 对数阶的时间复杂度 </p>
|
||||
<p align="center"> 图 2-12 对数阶的时间复杂度 </p>
|
||||
|
||||
<p>与指数阶类似,对数阶也常出现于递归函数中。以下代码形成了一个高度为 <span class="arithmatex">\(\log_2 n\)</span> 的递归树:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="13:12"><input checked="checked" id="__tabbed_13_1" name="__tabbed_13" type="radio" /><input id="__tabbed_13_2" name="__tabbed_13" type="radio" /><input id="__tabbed_13_3" name="__tabbed_13" type="radio" /><input id="__tabbed_13_4" name="__tabbed_13" type="radio" /><input id="__tabbed_13_5" name="__tabbed_13" type="radio" /><input id="__tabbed_13_6" name="__tabbed_13" type="radio" /><input id="__tabbed_13_7" name="__tabbed_13" type="radio" /><input id="__tabbed_13_8" name="__tabbed_13" type="radio" /><input id="__tabbed_13_9" name="__tabbed_13" type="radio" /><input id="__tabbed_13_10" name="__tabbed_13" type="radio" /><input id="__tabbed_13_11" name="__tabbed_13" type="radio" /><input id="__tabbed_13_12" name="__tabbed_13" type="radio" /><div class="tabbed-labels"><label for="__tabbed_13_1">Java</label><label for="__tabbed_13_2">C++</label><label for="__tabbed_13_3">Python</label><label for="__tabbed_13_4">Go</label><label for="__tabbed_13_5">JS</label><label for="__tabbed_13_6">TS</label><label for="__tabbed_13_7">C</label><label for="__tabbed_13_8">C#</label><label for="__tabbed_13_9">Swift</label><label for="__tabbed_13_10">Zig</label><label for="__tabbed_13_11">Dart</label><label for="__tabbed_13_12">Rust</label></div>
|
||||
@@ -6034,9 +6056,9 @@ O(\log_m n) = O(\log_k n / \log_k m) = O(\log_k n)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>图 2-7 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 <span class="arithmatex">\(n\)</span> ,树共有 <span class="arithmatex">\(\log_2 n + 1\)</span> 层,因此时间复杂度为 <span class="arithmatex">\(O(n \log n)\)</span> 。</p>
|
||||
<p>图 2-13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 <span class="arithmatex">\(n\)</span> ,树共有 <span class="arithmatex">\(\log_2 n + 1\)</span> 层,因此时间复杂度为 <span class="arithmatex">\(O(n \log n)\)</span> 。</p>
|
||||
<p><img alt="线性对数阶的时间复杂度" src="../time_complexity.assets/time_complexity_logarithmic_linear.png" /></p>
|
||||
<p align="center"> 图 2-7 线性对数阶的时间复杂度 </p>
|
||||
<p align="center"> 图 2-13 线性对数阶的时间复杂度 </p>
|
||||
|
||||
<p>主流排序算法的时间复杂度通常为 <span class="arithmatex">\(O(n \log n)\)</span> ,例如快速排序、归并排序、堆排序等。</p>
|
||||
<h3 id="7-on">7. 阶乘阶 <span class="arithmatex">\(O(n!)\)</span><a class="headerlink" href="#7-on" title="Permanent link">¶</a></h3>
|
||||
@@ -6044,7 +6066,7 @@ O(\log_m n) = O(\log_k n / \log_k m) = O(\log_k n)
|
||||
<div class="arithmatex">\[
|
||||
n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
|
||||
\]</div>
|
||||
<p>阶乘通常使用递归实现。如图 2-8 和以下代码所示,第一层分裂出 <span class="arithmatex">\(n\)</span> 个,第二层分裂出 <span class="arithmatex">\(n - 1\)</span> 个,以此类推,直至第 <span class="arithmatex">\(n\)</span> 层时停止分裂:</p>
|
||||
<p>阶乘通常使用递归实现。如图 2-14 和以下代码所示,第一层分裂出 <span class="arithmatex">\(n\)</span> 个,第二层分裂出 <span class="arithmatex">\(n - 1\)</span> 个,以此类推,直至第 <span class="arithmatex">\(n\)</span> 层时停止分裂:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="15:12"><input checked="checked" id="__tabbed_15_1" name="__tabbed_15" type="radio" /><input id="__tabbed_15_2" name="__tabbed_15" type="radio" /><input id="__tabbed_15_3" name="__tabbed_15" type="radio" /><input id="__tabbed_15_4" name="__tabbed_15" type="radio" /><input id="__tabbed_15_5" name="__tabbed_15" type="radio" /><input id="__tabbed_15_6" name="__tabbed_15" type="radio" /><input id="__tabbed_15_7" name="__tabbed_15" type="radio" /><input id="__tabbed_15_8" name="__tabbed_15" type="radio" /><input id="__tabbed_15_9" name="__tabbed_15" type="radio" /><input id="__tabbed_15_10" name="__tabbed_15" type="radio" /><input id="__tabbed_15_11" name="__tabbed_15" type="radio" /><input id="__tabbed_15_12" name="__tabbed_15" type="radio" /><div class="tabbed-labels"><label for="__tabbed_15_1">Java</label><label for="__tabbed_15_2">C++</label><label for="__tabbed_15_3">Python</label><label for="__tabbed_15_4">Go</label><label for="__tabbed_15_5">JS</label><label for="__tabbed_15_6">TS</label><label for="__tabbed_15_7">C</label><label for="__tabbed_15_8">C#</label><label for="__tabbed_15_9">Swift</label><label for="__tabbed_15_10">Zig</label><label for="__tabbed_15_11">Dart</label><label for="__tabbed_15_12">Rust</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
@@ -6214,10 +6236,10 @@ n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
|
||||
</div>
|
||||
</div>
|
||||
<p><img alt="阶乘阶的时间复杂度" src="../time_complexity.assets/time_complexity_factorial.png" /></p>
|
||||
<p align="center"> 图 2-8 阶乘阶的时间复杂度 </p>
|
||||
<p align="center"> 图 2-14 阶乘阶的时间复杂度 </p>
|
||||
|
||||
<p>请注意,因为当 <span class="arithmatex">\(n \geq 4\)</span> 时恒有 <span class="arithmatex">\(n! > 2^n\)</span> ,所以阶乘阶比指数阶增长得更快,在 <span class="arithmatex">\(n\)</span> 较大时也是不可接受的。</p>
|
||||
<h2 id="225">2.2.5 最差、最佳、平均时间复杂度<a class="headerlink" href="#225" title="Permanent link">¶</a></h2>
|
||||
<h2 id="235">2.3.5 最差、最佳、平均时间复杂度<a class="headerlink" href="#235" title="Permanent link">¶</a></h2>
|
||||
<p><strong>算法的时间效率往往不是固定的,而是与输入数据的分布有关</strong>。假设输入一个长度为 <span class="arithmatex">\(n\)</span> 的数组 <code>nums</code> ,其中 <code>nums</code> 由从 <span class="arithmatex">\(1\)</span> 至 <span class="arithmatex">\(n\)</span> 的数字组成,每个数字只出现一次,但元素顺序是随机打乱的,任务目标是返回元素 <span class="arithmatex">\(1\)</span> 的索引。我们可以得出以下结论。</p>
|
||||
<ul>
|
||||
<li>当 <code>nums = [?, ?, ..., 1]</code> ,即当末尾元素是 <span class="arithmatex">\(1\)</span> 时,需要完整遍历数组,<strong>达到最差时间复杂度 <span class="arithmatex">\(O(n)\)</span></strong> 。</li>
|
||||
@@ -6640,7 +6662,7 @@ n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../performance_evaluation/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.1 &nbsp; 算法效率评估" rel="prev">
|
||||
<a href="../iteration_and_recursion/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.2 &nbsp; 迭代与递归" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
@@ -6650,20 +6672,20 @@ n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.1 算法效率评估
|
||||
2.2 迭代与递归
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../space_complexity/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.3 &nbsp; 空间复杂度" rel="next">
|
||||
<a href="../space_complexity/" class="md-footer__link md-footer__link--next" aria-label="下一页: 2.4 &nbsp; 空间复杂度" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3445,7 +3467,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../chapter_computational_complexity/summary/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.4 &nbsp; 小结" rel="prev">
|
||||
<a href="../chapter_computational_complexity/summary/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 2.5 &nbsp; 小结" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
@@ -3455,7 +3477,7 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -4781,7 +4803,7 @@ dp[i, a] = dp[i-1, a] + dp[i, a - coins[i-1]]
|
||||
<a id="__codelineno-51-17" name="__codelineno-51-17" href="#__codelineno-51-17"></a><span class="w"> </span><span class="c1">// 若超过背包容量,则不选硬币 i</span>
|
||||
<a id="__codelineno-51-18" name="__codelineno-51-18" href="#__codelineno-51-18"></a><span class="w"> </span><span class="nx">dp</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">a</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">dp</span><span class="p">[</span><span class="nx">i</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="nx">a</span><span class="p">]</span>
|
||||
<a id="__codelineno-51-19" name="__codelineno-51-19" href="#__codelineno-51-19"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-51-20" name="__codelineno-51-20" href="#__codelineno-51-20"></a><span class="w"> </span><span class="c1">// 不选和选硬币 i 这两种方案的较小值</span>
|
||||
<a id="__codelineno-51-20" name="__codelineno-51-20" href="#__codelineno-51-20"></a><span class="w"> </span><span class="c1">// 不选和选硬币 i 这两种方案之和</span>
|
||||
<a id="__codelineno-51-21" name="__codelineno-51-21" href="#__codelineno-51-21"></a><span class="w"> </span><span class="nx">dp</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">a</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">dp</span><span class="p">[</span><span class="nx">i</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="nx">a</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">dp</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">a</span><span class="o">-</span><span class="nx">coins</span><span class="p">[</span><span class="nx">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span>
|
||||
<a id="__codelineno-51-22" name="__codelineno-51-22" href="#__codelineno-51-22"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-51-23" name="__codelineno-51-23" href="#__codelineno-51-23"></a><span class="w"> </span><span class="p">}</span>
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
+25
-3
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -535,6 +535,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -603,12 +605,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -628,7 +650,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -648,7 +670,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -525,6 +525,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -593,12 +595,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -618,7 +640,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -638,7 +660,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -535,6 +535,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -603,12 +605,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -628,7 +650,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -648,7 +670,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -586,6 +586,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -654,12 +656,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -679,7 +701,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -699,7 +721,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -586,6 +586,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -654,12 +656,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -679,7 +701,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -699,7 +721,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -600,6 +600,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -668,12 +670,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -693,7 +715,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -713,7 +735,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -535,6 +535,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -603,12 +605,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -628,7 +650,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -648,7 +670,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -521,6 +521,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -589,12 +591,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -614,7 +636,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -634,7 +656,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3515,7 +3537,17 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">binary_search_edge.go</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="p">[</span><span class="nx">class</span><span class="p">]{}</span><span class="o">-</span><span class="p">[</span><span class="kd">func</span><span class="p">]{</span><span class="nx">binarySearchLeftEdge</span><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">binary_search_edge.go</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cm">/* 二分查找最左一个 target */</span>
|
||||
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">binarySearchLeftEdge</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="c1">// 等价于查找 target 的插入点</span>
|
||||
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">binarySearchInsertion</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="p">)</span>
|
||||
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span><span class="c1">// 未找到 target ,返回 -1</span>
|
||||
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||||
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="w"> </span><span class="c1">// 找到 target ,返回索引 i</span>
|
||||
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span>
|
||||
<a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@@ -3641,7 +3673,19 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">binary_search_edge.go</span><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="p">[</span><span class="nx">class</span><span class="p">]{}</span><span class="o">-</span><span class="p">[</span><span class="kd">func</span><span class="p">]{</span><span class="nx">binarySearchRightEdge</span><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">binary_search_edge.go</span><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="cm">/* 二分查找最右一个 target */</span>
|
||||
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">binarySearchRightEdge</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="c1">// 转化为查找最左一个 target + 1</span>
|
||||
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">binarySearchInsertion</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="w"> </span><span class="c1">// j 指向最右一个 target ,i 指向首个大于 target 的元素</span>
|
||||
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a><span class="w"> </span><span class="c1">// 未找到 target ,返回 -1</span>
|
||||
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a><span class="w"> </span><span class="c1">// 找到 target ,返回索引 j</span>
|
||||
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">j</span>
|
||||
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3492,7 +3514,27 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">binary_search_insertion.go</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="p">[</span><span class="nx">class</span><span class="p">]{}</span><span class="o">-</span><span class="p">[</span><span class="kd">func</span><span class="p">]{</span><span class="nx">binarySearchInsertionSimple</span><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">binary_search_insertion.go</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cm">/* 二分查找插入点(无重复元素) */</span>
|
||||
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">binarySearchInsertionSimple</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="c1">// 初始化双闭区间 [0, n-1]</span>
|
||||
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span>
|
||||
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="w"> </span><span class="c1">// 计算中点索引 m</span>
|
||||
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">j</span><span class="o">-</span><span class="nx">i</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
|
||||
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">m</span><span class="p">]</span><span class="w"> </span><span class="p"><</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="w"> </span><span class="c1">// target 在区间 [m+1, j] 中</span>
|
||||
<a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">m</span><span class="p">]</span><span class="w"> </span><span class="p">></span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a><span class="w"> </span><span class="c1">// target 在区间 [i, m-1] 中</span>
|
||||
<a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-3-14" name="__codelineno-3-14" href="#__codelineno-3-14"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-3-15" name="__codelineno-3-15" href="#__codelineno-3-15"></a><span class="w"> </span><span class="c1">// 找到 target ,返回插入点 m</span>
|
||||
<a id="__codelineno-3-16" name="__codelineno-3-16" href="#__codelineno-3-16"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">m</span>
|
||||
<a id="__codelineno-3-17" name="__codelineno-3-17" href="#__codelineno-3-17"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-3-18" name="__codelineno-3-18" href="#__codelineno-3-18"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-3-19" name="__codelineno-3-19" href="#__codelineno-3-19"></a><span class="w"> </span><span class="c1">// 未找到 target ,返回插入点 i</span>
|
||||
<a id="__codelineno-3-20" name="__codelineno-3-20" href="#__codelineno-3-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span>
|
||||
<a id="__codelineno-3-21" name="__codelineno-3-21" href="#__codelineno-3-21"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@@ -3684,7 +3726,27 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">binary_search_insertion.go</span><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="p">[</span><span class="nx">class</span><span class="p">]{}</span><span class="o">-</span><span class="p">[</span><span class="kd">func</span><span class="p">]{</span><span class="nx">binarySearchInsertion</span><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">binary_search_insertion.go</span><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="cm">/* 二分查找插入点(存在重复元素) */</span>
|
||||
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="kd">func</span><span class="w"> </span><span class="nx">binarySearchInsertion</span><span class="p">(</span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="c1">// 初始化双闭区间 [0, n-1]</span>
|
||||
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">nums</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="w"> </span><span class="c1">// 计算中点索引 m</span>
|
||||
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">j</span><span class="o">-</span><span class="nx">i</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
|
||||
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">m</span><span class="p">]</span><span class="w"> </span><span class="p"><</span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a><span class="w"> </span><span class="c1">// target 在区间 [m+1, j] 中</span>
|
||||
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">m</span><span class="p">]</span><span class="w"> </span><span class="p">></span><span class="w"> </span><span class="nx">target</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a><span class="w"> </span><span class="c1">// target 在区间 [i, m-1] 中</span>
|
||||
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a><span class="w"> </span><span class="c1">// 首个小于 target 的元素在区间 [i, m-1] 中</span>
|
||||
<a id="__codelineno-15-16" name="__codelineno-15-16" href="#__codelineno-15-16"></a><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span>
|
||||
<a id="__codelineno-15-17" name="__codelineno-15-17" href="#__codelineno-15-17"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-15-18" name="__codelineno-15-18" href="#__codelineno-15-18"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-15-19" name="__codelineno-15-19" href="#__codelineno-15-19"></a><span class="w"> </span><span class="c1">// 返回插入点 i</span>
|
||||
<a id="__codelineno-15-20" name="__codelineno-15-20" href="#__codelineno-15-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span>
|
||||
<a id="__codelineno-15-21" name="__codelineno-15-21" href="#__codelineno-15-21"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
@@ -523,6 +523,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -591,12 +593,32 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/iteration_and_recursion/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 迭代与递归
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.2 时间复杂度
|
||||
2.3 时间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -616,7 +638,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.3 空间复杂度
|
||||
2.4 空间复杂度
|
||||
</span>
|
||||
|
||||
|
||||
@@ -636,7 +658,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
2.4 小结
|
||||
2.5 小结
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user