Skip to content

Commit af5f244

Browse files
authored
Update 03_Efficiency_and_the_O-Notation.md
1 parent 7c3700e commit af5f244

File tree

1 file changed

+6
-28
lines changed

1 file changed

+6
-28
lines changed

ch11/03_Efficiency_and_the_O-Notation.md

+6-28
Original file line numberDiff line numberDiff line change
@@ -21,35 +21,13 @@ O(N) |线性 |加倍 |线性搜索
2121
O(N log N) |--- |加倍加上与`N`成比例的量 |合并排序(`17.1.1`节)
2222
O(N²)      |二次方   |增加了四倍                |冒泡排序
2323

24+
`11-1` 显示了一些常见的运行时间,以及它们应用的算法示例。例如,许多其他的运行时间是可能的,包括一些比图中更糟糕的情况。许多重要的问题只能通过采用
25+
O(2^N)的算法来解决 - 对于这些,当N加倍时,运行时间是平方的!对于除了最小的数据集之外的所有数据集,这种算法都是不可行的。
2426

25-
26-
27-
28-
29-
30-
31-
32-
33-
34-
35-
36-
37-
38-
39-
40-
41-
42-
43-
44-
45-
46-
47-
48-
49-
50-
51-
52-
27+
有时候我们必须考虑操作成本随数据结构状态而变化的情况。例如,将元素添加到 `ArrayList` 的末尾通常可以在恒定时间内完成,除非 `ArrayList` 已达到其容
28+
量。在这种情况下,必须分配一个新的更大的数组,并将旧数组的内容转移到其中。此操作的成本与阵列中元素的数量成线性关系,但发生的次数相对较少。在这种情况
29+
下,我们计算操作的摊销成本 - 即执行 `n` 次的总成本除以 `n`,当 `n` 变得任意大时,将其取为极限。在向 `ArrayList` 添加元素的情况下,`N` 个元素的总成
30+
本为 `O(N)`,因此摊余成本为 `O(1)`
5331

5432

5533

0 commit comments

Comments
 (0)