mirror of
https://github.com/krahets/hello-algo.git
synced 2025-10-31 02:17:06 +08:00
Sync zh and zh-hant versions (#1801)
* Sync zh and zh-hant versions. * Unifying "数据体量" -> "数据规模".
This commit is contained in:
@ -26,10 +26,10 @@
|
||||
|
||||
由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为<u>渐近复杂度分析(asymptotic complexity analysis)</u>,简称<u>复杂度分析</u>。
|
||||
|
||||
复杂度分析能够体现算法运行所需的时间和空间资源与输入数据体量之间的关系。**它描述了随着输入数据体量的增加,算法执行所需时间和空间的增长趋势**。这个定义有些拗口,我们可以将其分为三个重点来理解。
|
||||
复杂度分析能够体现算法运行所需的时间和空间资源与输入数据规模之间的关系。**它描述了随着输入数据规模的增加,算法执行所需时间和空间的增长趋势**。这个定义有些拗口,我们可以将其分为三个重点来理解。
|
||||
|
||||
- “时间和空间资源”分别对应<u>时间复杂度(time complexity)</u>和<u>空间复杂度(space complexity)</u>。
|
||||
- “随着输入数据体量的增加”意味着复杂度反映了算法运行效率与输入数据体量之间的关系。
|
||||
- “随着输入数据规模的增加”意味着复杂度反映了算法运行效率与输入数据规模之间的关系。
|
||||
- “时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间增长的“快慢”。
|
||||
|
||||
**复杂度分析克服了实际测试方法的弊端**,体现在以下几个方面。
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
| 数据预处理 | / | 排序 $O(n \log n)$ | 建树 $O(n \log n)$ | 建哈希表 $O(n)$ |
|
||||
| 数据是否有序 | 无序 | 有序 | 有序 | 无序 |
|
||||
|
||||
搜索算法的选择还取决于数据体量、搜索性能要求、数据查询与更新频率等。
|
||||
搜索算法的选择还取决规模、搜索性能要求、数据查询与更新频率等。
|
||||
|
||||
**线性搜索**
|
||||
|
||||
|
||||
@ -3,6 +3,6 @@
|
||||
- 二分查找依赖数据的有序性,通过循环逐步缩减一半搜索区间来进行查找。它要求输入数据有序,且仅适用于数组或基于数组实现的数据结构。
|
||||
- 暴力搜索通过遍历数据结构来定位数据。线性搜索适用于数组和链表,广度优先搜索和深度优先搜索适用于图和树。此类算法通用性好,无须对数据进行预处理,但时间复杂度 $O(n)$ 较高。
|
||||
- 哈希查找、树查找和二分查找属于高效搜索方法,可在特定数据结构中快速定位目标元素。此类算法效率高,时间复杂度可达 $O(\log n)$ 甚至 $O(1)$ ,但通常需要借助额外数据结构。
|
||||
- 实际中,我们需要对数据体量、搜索性能要求、数据查询和更新频率等因素进行具体分析,从而选择合适的搜索方法。
|
||||
- 实际中,我们需要对数据规模、搜索性能要求、数据查询和更新频率等因素进行具体分析,从而选择合适的搜索方法。
|
||||
- 线性搜索适用于小型或频繁更新的数据;二分查找适用于大型、排序的数据;哈希查找适用于对查询效率要求较高且无须范围查询的数据;树查找适用于需要维护顺序和支持范围查询的大型动态数据。
|
||||
- 用哈希查找替换线性查找是一种常用的优化运行时间的策略,可将时间复杂度从 $O(n)$ 降至 $O(1)$ 。
|
||||
|
||||
Reference in New Issue
Block a user