mirror of
https://github.com/krahets/hello-algo.git
synced 2025-10-31 02:17:06 +08:00
Update performance_evaluation.md (#1770)
* Update performance_evaluation.md
**修改内容:**
把本节使用的 “输入数据大小” 统一修改为 “输入数据规模”。
**修改原因:**
今天在分析一个函数的复杂度时回看本节,发现这处表述好像存在歧义。阅读本节内容可知,复杂度分析实际是分析算法的运行时间和空间占用与数据规模的关系。 从字面理解,“输入数据的大小” 更像指输入数据的数值大小,而非数据规模。虽然多数场景下,输入数据的数值大小可以通过迭代/递归反映数据规模,但在个别场景下并非如此,如 5.1.2 节 "基于链表实现的栈" 中的 `to_list() `函数:
```python
def to_list(self) -> list[int]:
"""转化为列表用于打印"""
arr = []
node = self._peek
while node:
arr.append(node.val)
node = node.next
arr.reverse()
return arr
```
该函数无形参,其时间复杂度实际指,函数运行时间随着栈中数据数量的增加而呈现的增长趋势,而非随栈中数据数值大小的增加呈现的增长趋势。 因此,为规避歧义,小白提议将本节的“输入数据大小” 改为 “输入数据规模”。
然而,一百个读者有一百个哈姆雷特,或许其他读者读到这里未感觉歧义,且本章后续章节还有多处使用这一表述,若本节修改可能后面也需与其保持统一。或许也可以在本章2.1节插入一个Tip约定这一表述的实际意义。考虑不周,欢迎 K大及评阅大佬指正!
* Update performance_evaluation.md
---------
Co-authored-by: Yudong Jin <krahets@163.com>
This commit is contained in:
@ -26,10 +26,10 @@
|
||||
|
||||
由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为<u>渐近复杂度分析(asymptotic complexity analysis)</u>,简称<u>复杂度分析</u>。
|
||||
|
||||
复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。**它描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势**。这个定义有些拗口,我们可以将其分为三个重点来理解。
|
||||
复杂度分析能够体现算法运行所需的时间和空间资源与输入数据体量之间的关系。**它描述了随着输入数据体量的增加,算法执行所需时间和空间的增长趋势**。这个定义有些拗口,我们可以将其分为三个重点来理解。
|
||||
|
||||
- “时间和空间资源”分别对应<u>时间复杂度(time complexity)</u>和<u>空间复杂度(space complexity)</u>。
|
||||
- “随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。
|
||||
- “随着输入数据体量的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。
|
||||
- “时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间增长的“快慢”。
|
||||
|
||||
**复杂度分析克服了实际测试方法的弊端**,体现在以下几个方面。
|
||||
|
||||
Reference in New Issue
Block a user