mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-07 21:24:18 +00:00
Modify 。** to **。 for better visualization.
This commit is contained in:
@@ -8,8 +8,8 @@ comments: true
|
||||
|
||||
在开始学习算法之前,我们首先要想清楚算法的设计目标是什么,或者说,如何来评判算法的好与坏。整体上看,我们设计算法时追求两个层面的目标。
|
||||
|
||||
1. **找到问题解法。** 算法需要能够在规定的输入范围下,可靠地求得问题的正确解。
|
||||
2. **寻求最优解法。** 同一个问题可能存在多种解法,而我们希望算法效率尽可能的高。
|
||||
1. **找到问题解法**。算法需要能够在规定的输入范围下,可靠地求得问题的正确解。
|
||||
2. **寻求最优解法**。同一个问题可能存在多种解法,而我们希望算法效率尽可能的高。
|
||||
|
||||
换言之,在可以解决问题的前提下,算法效率则是主要评价维度,包括:
|
||||
|
||||
@@ -24,9 +24,9 @@ comments: true
|
||||
|
||||
假设我们现在有算法 A 和 算法 B ,都能够解决同一问题,现在需要对比两个算法之间的效率。我们能够想到的最直接的方式,就是找一台计算机,把两个算法都完整跑一遍,并监控记录运行时间和内存占用情况。这种评估方式能够反映真实情况,但是也存在很大的硬伤。
|
||||
|
||||
**难以排除测试环境的干扰因素。** 硬件配置会影响到算法的性能表现。例如,在某台计算机中,算法 A 比算法 B 运行时间更短;但换到另一台配置不同的计算机中,可能会得到相反的测试结果。这意味着我们需要在各种机器上展开测试,而这是不现实的。
|
||||
**难以排除测试环境的干扰因素**。硬件配置会影响到算法的性能表现。例如,在某台计算机中,算法 A 比算法 B 运行时间更短;但换到另一台配置不同的计算机中,可能会得到相反的测试结果。这意味着我们需要在各种机器上展开测试,而这是不现实的。
|
||||
|
||||
**展开完整测试非常耗费资源。** 随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。
|
||||
**展开完整测试非常耗费资源**。随着输入数据量的大小变化,算法会呈现出不同的效率表现。比如,有可能输入数据量较小时,算法 A 运行时间短于算法 B ,而在输入数据量较大时,测试结果截然相反。因此,若想要达到具有说服力的对比结果,那么需要输入各种体量数据,这样的测试需要占用大量计算资源。
|
||||
|
||||
### 理论估算
|
||||
|
||||
@@ -34,7 +34,7 @@ comments: true
|
||||
|
||||
**复杂度分析评估随着输入数据量的增长,算法的运行时间和占用空间的增长趋势** 。根据时间和空间两方面,复杂度可分为「时间复杂度 Time Complexity」和「空间复杂度 Space Complexity」。
|
||||
|
||||
**复杂度分析克服了实际测试方法的弊端。** 一是独立于测试环境,分析结果适用于所有运行平台。二是可以体现不同数据量下的算法效率,尤其是可以反映大数据量下的算法性能。
|
||||
**复杂度分析克服了实际测试方法的弊端**。一是独立于测试环境,分析结果适用于所有运行平台。二是可以体现不同数据量下的算法效率,尤其是可以反映大数据量下的算法性能。
|
||||
|
||||
## 复杂度分析的重要性
|
||||
|
||||
|
||||
Reference in New Issue
Block a user