Polish the content.

This commit is contained in:
krahets
2023-08-21 03:57:09 +08:00
parent f5dda8d99a
commit 1aff6d6cc2
19 changed files with 44 additions and 38 deletions

View File

@ -1210,7 +1210,7 @@ $$
![常数阶、线性阶和平方阶的时间复杂度](time_complexity.assets/time_complexity_constant_linear_quadratic.png)
以冒泡排序为例,外层循环执行 $n - 1$ 次,内层循环执行 $n-1, n-2, \cdots, 2, 1$ 次,平均为 $n / 2$ 次,因此时间复杂度为 $O((n - 1) n / 2) = O(n^2)$ 。
以冒泡排序为例,外层循环执行 $n - 1$ 次,内层循环执行 $n-1, n-2, \dots, 2, 1$ 次,平均为 $n / 2$ 次,因此时间复杂度为 $O((n - 1) n / 2) = O(n^2)$ 。
=== "Java"
@ -1596,7 +1596,13 @@ $$
!!! tip
“一分为 $m$”对应的时间复杂度 $O(\log_m n)$ 。我们通常会省略底数 $m$ ,直接将其记为 $O(\log n)$ 。
准确来说,“一分为 $m$”对应的时间复杂度 $O(\log_m n)$ 。而通过对数换底公式,我们可以得到具有不同底数的、相等的时间复杂度:
$$
O(\log_m n) = O(\log_k n / \log_k m) = O(\log_k n)
$$
因此我们通常会省略底数 $m$ ,将对数阶直接记为 $O(\log n)$ 。
### 线性对数阶 $O(n \log n)$
@ -1683,7 +1689,7 @@ $$
阶乘阶对应数学上的“全排列”问题。给定 $n$ 个互不重复的元素,求其所有可能的排列方案,方案数量为:
$$
n! = n \times (n - 1) \times (n - 2) \times \cdots \times 2 \times 1
n! = n \times (n - 1) \times (n - 2) \times \dots \times 2 \times 1
$$
阶乘通常使用递归实现。例如在以下代码中,第一层分裂出 $n$ 个,第二层分裂出 $n - 1$ 个,以此类推,直至第 $n$ 层时停止分裂: