mirror of
https://github.com/krahets/hello-algo.git
synced 2025-12-19 07:17:54 +08:00
Update the captions of all the figures.
This commit is contained in:
@@ -365,9 +365,7 @@ $$
|
||||
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 算法 A, B, C 的时间增长趋势 </p>
|
||||

|
||||
|
||||
相比直接统计算法运行时间,时间复杂度分析的做法有什么好处呢?以及有什么不足?
|
||||
|
||||
@@ -534,9 +532,7 @@ $T(n)$ 是个一次函数,说明时间增长趋势是线性的,因此易得
|
||||
T(n) = O(f(n))
|
||||
$$
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 函数的渐近上界 </p>
|
||||

|
||||
|
||||
本质上看,计算渐近上界就是在找一个函数 $f(n)$ ,**使得在 $n$ 趋向于无穷大时,$T(n)$ 和 $f(n)$ 处于相同的增长级别(仅相差一个常数项 $c$ 的倍数)**。
|
||||
|
||||
@@ -774,9 +770,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!) \newline
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 时间复杂度的常见类型 </p>
|
||||

|
||||
|
||||
!!! tip
|
||||
|
||||
@@ -1042,9 +1036,7 @@ $$
|
||||
[class]{}-[func]{quadratic}
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 常数阶、线性阶、平方阶的时间复杂度 </p>
|
||||

|
||||
|
||||
以「冒泡排序」为例,外层循环 $n - 1$ 次,内层循环 $n-1, n-2, \cdots, 2, 1$ 次,平均为 $\frac{n}{2}$ 次,因此时间复杂度为 $O(n^2)$ 。
|
||||
|
||||
@@ -1180,9 +1172,7 @@ $$
|
||||
[class]{}-[func]{exponential}
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 指数阶的时间复杂度 </p>
|
||||

|
||||
|
||||
在实际算法中,指数阶常出现于递归函数。例如以下代码,不断地一分为二,分裂 $n$ 次后停止。
|
||||
|
||||
@@ -1314,9 +1304,7 @@ $$
|
||||
[class]{}-[func]{logarithmic}
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 对数阶的时间复杂度 </p>
|
||||

|
||||
|
||||
与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $\log_2 n$ 的递归树。
|
||||
|
||||
@@ -1446,9 +1434,7 @@ $$
|
||||
[class]{}-[func]{linearLogRecur}
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 线性对数阶的时间复杂度 </p>
|
||||

|
||||
|
||||
### 阶乘阶 $O(n!)$
|
||||
|
||||
@@ -1520,9 +1506,7 @@ $$
|
||||
[class]{}-[func]{factorialRecur}
|
||||
```
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 阶乘阶的时间复杂度 </p>
|
||||

|
||||
|
||||
## 最差、最佳、平均时间复杂度
|
||||
|
||||
|
||||
Reference in New Issue
Block a user