@@ -48,21 +48,21 @@ def find_max(arr):
48
48
时间复杂度分析如下:
49
49
- 当 $n$ 足够大时,3ドルn$ 是主要影响项,常数 2ドル$ 可以忽略不计。
50
50
- 由于我们关注的是随规模增长的趋势,常数系数 3ドル$ 也可以省略。
51
- - 因此,该算法的时间复杂度为 $O(n)$。这里的 $O$ 表示渐进符号 ,强调 $f(n)$ 与 $n$ 成正比。
51
+ - 因此,该算法的时间复杂度为 $O(n)$。这里的 $O$ 表示渐近符号 ,强调 $f(n)$ 与 $n$ 成正比。
52
52
53
- 所谓「算法执行时间的增长趋势」,实际上就是用类似 $O$ 这样的渐进符号 ,来简洁地描述算法随输入规模变化时的资源消耗情况。
53
+ 所谓「算法执行时间的增长趋势」,实际上就是用类似 $O$ 这样的渐近符号 ,来简洁地描述算法随输入规模变化时的资源消耗情况。
54
54
55
- ### 2.2 渐进符号
55
+ ### 2.2 渐近符号
56
56
57
- 时间复杂度通常记作 $T(n) = O(f(n)),ドル称为 ** 渐进时间复杂度 (Asymptotic Time Complexity)** ,用于描述当问题规模 $n$ 趋近于无穷大时,算法运行时间的增长趋势。我们常用渐进符号 (如 $O$、$\Omega$、$\Theta$ 等)来表达这种增长关系。渐进时间复杂度只关注主导项 ,忽略常数和低阶项,从而简洁地反映算法的本质效率。
57
+ 时间复杂度通常记作 $T(n) = O(f(n)),ドル称为 ** 渐近时间复杂度 (Asymptotic Time Complexity)** ,用于描述当问题规模 $n$ 趋近于无穷大时,算法运行时间的增长趋势。我们常用渐近符号 (如 $O$、$\Omega$、$\Theta$ 等)来表达这种增长关系。渐近时间复杂度只关注主导项 ,忽略常数和低阶项,从而简洁地反映算法的本质效率。
58
58
59
- > ** 渐进符号 (Asymptotic Symbol)** :一类数学符号,用于描述函数(如算法运行时间或空间)随输入规模增长时的变化速度。在算法分析中,常用的渐进符号有大 $O$(上界)、大 $\Omega$(下界)、大 $\Theta$(紧确界),它们帮助我们以统一的方式比较不同算法的效率。
59
+ > ** 渐近符号 (Asymptotic Symbol)** :一类数学符号,用于描述函数(如算法运行时间或空间)随输入规模增长时的变化速度。在算法分析中,常用的渐近符号有大 $O$(上界)、大 $\Omega$(下界)、大 $\Theta$(紧确界),它们帮助我们以统一的方式比较不同算法的效率。
60
60
61
- ![ 渐进符号关系图 ] ( https://qcdn.itcharge.cn/images/202109092356694.png )
61
+ ![ 渐近符号关系图 ] ( https://qcdn.itcharge.cn/images/202109092356694.png )
62
62
63
- #### 2.2.1 渐进上界符号 $O$
63
+ #### 2.2.1 渐近上界符号 $O$
64
64
65
- > ** 渐进上界符号 $O$** :用于描述算法运行时间的上限,通常反映算法在最坏情况下的性能。
65
+ > ** 渐近上界符号 $O$** :用于描述算法运行时间的上限,通常反映算法在最坏情况下的性能。
66
66
67
67
** 数学定义** :设 $T(n)$ 和 $f(n)$ 为两个函数,若存在正常数 $c$ 和 $n_0,ドル使得对所有 $n \geq n_0,ドル都有 $T(n) \leq c \cdot f(n),ドル则称 $T(n) = O(f(n))$。
68
68
@@ -73,9 +73,9 @@ def find_max(arr):
73
73
> - 如果 $T(n) = 2 \times n + 5,ドル则 $T(n) = O(n)$。
74
74
> - 如果 $T(n) = 100,ドル则 $T(n) = O(1)$。
75
75
76
- #### 2.2.2 渐进下界符号 $\Omega$
76
+ #### 2.2.2 渐近下界符号 $\Omega$
77
77
78
- > ** 渐进下界符号 $\Omega$** :用于描述算法运行时间的下界,通常反映算法在最优情况下的性能。
78
+ > ** 渐近下界符号 $\Omega$** :用于描述算法运行时间的下界,通常反映算法在最优情况下的性能。
79
79
80
80
** 数学定义** :设 $T(n)$ 和 $f(n)$ 为两个函数,若存在正常数 $c > 0$ 和 $n_0,ドル使得对所有 $n \geq n_0,ドル都有 $T(n) \geq c \cdot f(n),ドル则称 $T(n) = \Omega(f(n))$。
81
81
@@ -86,9 +86,9 @@ def find_max(arr):
86
86
> - 如果 $T(n) = 2 \times n + 5,ドル则 $T(n) = \Omega(n)$。
87
87
> - 如果 $T(n) = n^3,ドル则 $T(n) = \Omega(n^2)$。
88
88
89
- #### 2.2.3 渐进紧确界符号 $\Theta$
89
+ #### 2.2.3 渐近紧确界符号 $\Theta$
90
90
91
- > ** 渐进紧确界符号 $\Theta$** :用于描述算法运行时间的精确数量级,即算法在最好和最坏情况下的增长速度都与 $f(n)$ 保持一致。
91
+ > ** 渐近紧确界符号 $\Theta$** :用于描述算法运行时间的精确数量级,即算法在最好和最坏情况下的增长速度都与 $f(n)$ 保持一致。
92
92
93
93
** 数学定义** :设 $T(n)$ 和 $f(n)$ 为两个函数,若存在正常数 $c_1, c_2 > 0$ 及 $n_0,ドル使得对所有 $n \geq n_0,ドル都有 $c_1 \cdot f(n) \leq T(n) \leq c_2 \cdot f(n),ドル则称 $T(n) = \Theta(f(n))$。
94
94
@@ -101,7 +101,7 @@ def find_max(arr):
101
101
102
102
### 2.3 时间复杂度计算
103
103
104
- 渐进符号用于描述函数的上界 、下界,以及算法执行时间随问题规模增长的趋势。
104
+ 渐近符号用于描述函数的上界 、下界,以及算法执行时间随问题规模增长的趋势。
105
105
106
106
在分析时间复杂度时,我们通常使用 $O$ 符号来表示算法的上界,因为实际应用中更关注算法在最坏情况下的表现。
107
107
@@ -339,7 +339,7 @@ def find(nums, val):
339
339
340
340
> ** 空间复杂度(Space Complexity)** :在问题的输入规模为 $n$ 的条件下,算法所占用的空间大小,可以记作为 $S(n)$。一般将 ** 算法的辅助空间** 作为衡量空间复杂度的标准。
341
341
342
- 空间复杂度的渐进符号表示方法与时间复杂度相同 ,可以表示为 $S(n) = O(f(n)),ドル表示算法空间占用随问题规模 $n$ 的增长趋势。
342
+ 空间复杂度的渐近符号表示方法与时间复杂度相同 ,可以表示为 $S(n) = O(f(n)),ドル表示算法空间占用随问题规模 $n$ 的增长趋势。
343
343
344
344
相对于算法的时间复杂度计算来说,算法的空间复杂度更容易计算。空间复杂度的计算主要包括局部变量占用的存储空间和递归栈空间两个部分。
345
345
@@ -376,7 +376,7 @@ def algorithm(n):
376
376
377
377
## 4. 总结
378
378
379
- ** 「算法复杂度」** 包括 ** 「时间复杂度」** 和 ** 「空间复杂度」** ,用于衡量算法在输入规模 $n$ 增大时的资源消耗情况。通常使用** 渐进符号 ** (如 $O$ 符号)来描述算法复杂度的增长趋势。
379
+ ** 「算法复杂度」** 包括 ** 「时间复杂度」** 和 ** 「空间复杂度」** ,用于衡量算法在输入规模 $n$ 增大时的资源消耗情况。通常使用** 渐近符号 ** (如 $O$ 符号)来描述算法复杂度的增长趋势。
380
380
381
381
常见的时间复杂度有:$O(1)$、$O(\log n)$、$O(n)$、$O(n \log n)$、$O(n^2)$、$O(n^3)$、$O(2^n)$、$O(n!)$。
382
382
0 commit comments