Update the captions of all the figures.

This commit is contained in:
krahets
2023-02-26 18:18:34 +08:00
parent 85d04b30fb
commit 9e99ac06ce
31 changed files with 99 additions and 175 deletions

View File

@ -20,9 +20,7 @@
- 「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返回时,栈帧空间会被释放。
- 「指令空间」用于保存编译后的程序指令,**在实际统计中一般忽略不计**。
![space_types](space_complexity.assets/space_types.png)
<p align="center"> Fig. 算法使用的相关空间 </p>
![算法使用的相关空间](space_complexity.assets/space_types.png)
=== "Java"
@ -561,9 +559,7 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
\end{aligned}
$$
![space_complexity_common_types](space_complexity.assets/space_complexity_common_types.png)
<p align="center"> Fig. 空间复杂度的常见类型 </p>
![空间复杂度的常见类型](space_complexity.assets/space_complexity_common_types.png)
!!! tip
@ -761,9 +757,7 @@ $$
[class]{}-[func]{linearRecur}
```
![space_complexity_recursive_linear](space_complexity.assets/space_complexity_recursive_linear.png)
<p align="center"> Fig. 递归函数产生的线性阶空间复杂度 </p>
![递归函数产生的线性阶空间复杂度](space_complexity.assets/space_complexity_recursive_linear.png)
### 平方阶 $O(n^2)$
@ -891,9 +885,7 @@ $$
[class]{}-[func]{quadraticRecur}
```
![space_complexity_recursive_quadratic](space_complexity.assets/space_complexity_recursive_quadratic.png)
<p align="center"> Fig. 递归函数产生的平方阶空间复杂度 </p>
![递归函数产生的平方阶空间复杂度](space_complexity.assets/space_complexity_recursive_quadratic.png)
### 指数阶 $O(2^n)$
@ -959,9 +951,7 @@ $$
[class]{}-[func]{buildTree}
```
![space_complexity_exponential](space_complexity.assets/space_complexity_exponential.png)
<p align="center"> Fig. 满二叉树下的指数阶空间复杂度 </p>
![满二叉树产生的指数阶空间复杂度](space_complexity.assets/space_complexity_exponential.png)
### 对数阶 $O(\log n)$

View File

@ -365,9 +365,7 @@ $$
```
![time_complexity_simple_example](time_complexity.assets/time_complexity_simple_example.png)
<p align="center"> Fig. 算法 A, B, C 的时间增长趋势 </p>
![算法 A, B, C 的时间增长趋势](time_complexity.assets/time_complexity_simple_example.png)
相比直接统计算法运行时间,时间复杂度分析的做法有什么好处呢?以及有什么不足?
@ -534,9 +532,7 @@ $T(n)$ 是个一次函数,说明时间增长趋势是线性的,因此易得
T(n) = O(f(n))
$$
![asymptotic_upper_bound](time_complexity.assets/asymptotic_upper_bound.png)
<p align="center"> Fig. 函数的渐近上界 </p>
![函数的渐近上界](time_complexity.assets/asymptotic_upper_bound.png)
本质上看,计算渐近上界就是在找一个函数 $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}
$$
![time_complexity_common_types](time_complexity.assets/time_complexity_common_types.png)
<p align="center"> Fig. 时间复杂度的常见类型 </p>
![时间复杂度的常见类型](time_complexity.assets/time_complexity_common_types.png)
!!! tip
@ -1042,9 +1036,7 @@ $$
[class]{}-[func]{quadratic}
```
![time_complexity_constant_linear_quadratic](time_complexity.assets/time_complexity_constant_linear_quadratic.png)
<p align="center"> Fig. 常数阶、线性阶、平方阶的时间复杂度 </p>
![常数阶、线性阶、平方阶的时间复杂度](time_complexity.assets/time_complexity_constant_linear_quadratic.png)
以「冒泡排序」为例,外层循环 $n - 1$ 次,内层循环 $n-1, n-2, \cdots, 2, 1$ 次,平均为 $\frac{n}{2}$ 次,因此时间复杂度为 $O(n^2)$ 。
@ -1180,9 +1172,7 @@ $$
[class]{}-[func]{exponential}
```
![time_complexity_exponential](time_complexity.assets/time_complexity_exponential.png)
<p align="center"> Fig. 指数阶的时间复杂度 </p>
![指数阶的时间复杂度](time_complexity.assets/time_complexity_exponential.png)
在实际算法中,指数阶常出现于递归函数。例如以下代码,不断地一分为二,分裂 $n$ 次后停止。
@ -1314,9 +1304,7 @@ $$
[class]{}-[func]{logarithmic}
```
![time_complexity_logarithmic](time_complexity.assets/time_complexity_logarithmic.png)
<p align="center"> Fig. 对数阶的时间复杂度 </p>
![对数阶的时间复杂度](time_complexity.assets/time_complexity_logarithmic.png)
与指数阶类似,对数阶也常出现于递归函数。以下代码形成了一个高度为 $\log_2 n$ 的递归树。
@ -1446,9 +1434,7 @@ $$
[class]{}-[func]{linearLogRecur}
```
![time_complexity_logarithmic_linear](time_complexity.assets/time_complexity_logarithmic_linear.png)
<p align="center"> Fig. 线性对数阶的时间复杂度 </p>
![线性对数阶的时间复杂度](time_complexity.assets/time_complexity_logarithmic_linear.png)
### 阶乘阶 $O(n!)$
@ -1520,9 +1506,7 @@ $$
[class]{}-[func]{factorialRecur}
```
![time_complexity_factorial](time_complexity.assets/time_complexity_factorial.png)
<p align="center"> Fig. 阶乘阶的时间复杂度 </p>
![阶乘阶的时间复杂度](time_complexity.assets/time_complexity_factorial.png)
## 最差、最佳、平均时间复杂度