mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 09:49:49 +08:00
deploy
This commit is contained in:
@@ -549,7 +549,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 2h12v6l-4 4 4 4v6H6v-6l4-4-4-4V2m10 14.5-4-4-4 4V20h8v-3.5m-4-5 4-4V4H8v3.5l4 4M10 6h4v.75l-2 2-2-2V6Z"/></svg>
|
||||
|
||||
<span class="md-ellipsis">
|
||||
第 2 章 时空复杂度
|
||||
第 2 章 复杂度分析
|
||||
</span>
|
||||
|
||||
|
||||
@@ -564,7 +564,7 @@
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_3">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
第 2 章 时空复杂度
|
||||
第 2 章 复杂度分析
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -3447,7 +3447,7 @@
|
||||
<li><strong>找到问题解法</strong>:算法需要在规定的输入范围内,可靠地求得问题的正确解。</li>
|
||||
<li><strong>寻求最优解法</strong>:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。</li>
|
||||
</ol>
|
||||
<p>也就是说,在能够解决问题的前提下,算法效率是衡量算法优劣的主要评价指标,它包括以下两个维度。</p>
|
||||
<p>也就是说,在能够解决问题的前提下,算法效率已成为衡量算法优劣的主要评价指标,它包括以下两个维度。</p>
|
||||
<ul>
|
||||
<li><strong>时间效率</strong>:算法运行速度的快慢。</li>
|
||||
<li><strong>空间效率</strong>:算法占用内存空间的大小。</li>
|
||||
@@ -3457,7 +3457,7 @@
|
||||
<h2 id="211">2.1.1 实际测试<a class="headerlink" href="#211" title="Permanent link">¶</a></h2>
|
||||
<p>假设我们现在有算法 <code>A</code> 和算法 <code>B</code> ,它们都能解决同一问题,现在需要对比这两个算法的效率。最直接的方法是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真实情况,但也存在较大局限性。</p>
|
||||
<p>一方面,<strong>难以排除测试环境的干扰因素</strong>。硬件配置会影响算法的性能表现。比如在某台计算机中,算法 <code>A</code> 的运行时间比算法 <code>B</code> 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要在各种机器上进行测试,统计平均效率,而这是不现实的。</p>
|
||||
<p>另一方面,<strong>展开完整测试非常耗费资源</strong>。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入数据量较小时,算法 <code>A</code> 的运行时间比算法 <code>B</code> 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为了得到有说服力的结论,我们需要测试各种规模的输入数据,而这样需要耗费大量的计算资源。</p>
|
||||
<p>另一方面,<strong>展开完整测试非常耗费资源</strong>。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入数据量较小时,算法 <code>A</code> 的运行时间比算法 <code>B</code> 更少;而输入数据量较大时,测试结果可能恰恰相反。因此,为了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。</p>
|
||||
<h2 id="212">2.1.2 理论估算<a class="headerlink" href="#212" title="Permanent link">¶</a></h2>
|
||||
<p>由于实际测试具有较大的局限性,我们可以考虑仅通过一些计算来评估算法的效率。这种估算方法被称为「渐近复杂度分析 asymptotic complexity analysis」,简称「复杂度分析」。</p>
|
||||
<p>复杂度分析体现算法运行所需的时间(空间)资源与输入数据大小之间的关系。<strong>它描述了随着输入数据大小的增加,算法执行所需时间和空间的增长趋势</strong>。这个定义有些拗口,我们可以将其分为三个重点来理解。</p>
|
||||
@@ -3556,7 +3556,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../" class="md-footer__link md-footer__link--prev" aria-label="上一页: 第 2 章 &nbsp; 时空复杂度" rel="prev">
|
||||
<a href="../" class="md-footer__link md-footer__link--prev" aria-label="上一页: 第 2 章 &nbsp; 复杂度分析" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
@@ -3566,7 +3566,7 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
第 2 章 时空复杂度
|
||||
第 2 章 复杂度分析
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user