This commit is contained in:
krahets
2023-08-20 13:37:20 +08:00
parent 88e0b11361
commit 96fded547b
35 changed files with 777 additions and 716 deletions

View File

@ -3444,10 +3444,10 @@
<p><strong>展开完整测试非常耗费资源</strong>。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入数据量较小时,算法 <code>A</code> 的运行时间比算法 <code>B</code> 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为了得到有说服力的结论,我们需要测试各种规模的输入数据,而这样需要耗费大量的计算资源。</p>
<h2 id="212">2.1.2 &nbsp; 理论估算<a class="headerlink" href="#212" title="Permanent link">&para;</a></h2>
<p>由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为「渐近复杂度分析 Asymptotic Complexity Analysis」简称为「复杂度分析」。</p>
<p><strong>复杂度分析评估的是算法运行效率随着输入数据量增多时的增长趋势</strong>。这个定义有些拗口,我们可以将其分为三个重点来理解:</p>
<p>复杂度分析评估的是算法执行所需的时间和空间资源。<strong>它被表示为一个函数,描述了随着输入数据大小的增加,算法所需时间(空间)的增长趋势</strong>。这个定义有些拗口,我们可以将其分为三个重点来理解:</p>
<ol>
<li>算法运行效率”可分为运行时间和占用空间两部分,与之对应地,复杂度可分为「时间复杂度 Time Complexity」和「空间复杂度 Space Complexity」。</li>
<li>“随着输入数据量增多时”意味着复杂度反映了算法运行效率与输入数据量之间的关系。</li>
<li>时间(空间)”分别对应「时间复杂度 Time Complexity」和「空间复杂度 Space Complexity」。</li>
<li>“随着输入数据大小的增加”意味着复杂度反映了算法运行效率与输入数据量之间的关系。</li>
<li>“增长趋势”表示复杂度分析关注的是算法时间与空间的增长趋势,而非具体的运行时间或占用空间。</li>
</ol>
<p><strong>复杂度分析克服了实际测试方法的弊端</strong>。首先,它独立于测试环境,分析结果适用于所有运行平台。其次,它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。</p>