This commit is contained in:
krahets
2023-12-02 06:24:11 +08:00
parent 5783c402bf
commit d20d8b3ee1
107 changed files with 1685 additions and 1745 deletions

View File

@ -3317,15 +3317,15 @@
<!-- Page content -->
<h1 id="125">12.5 &nbsp; 小结<a class="headerlink" href="#125" title="Permanent link">&para;</a></h1>
<ul>
<li>分治算法是一种常见的算法设计策略,包括分(划分)和治(合并)两个阶段,通常基于递归实现。</li>
<li>判断是否是分治算法问题的依据包括:问题能否分解、子问题是否独立、子问题是否可以被合并。</li>
<li>分治是一种常见的算法设计策略,包括分(划分)和治(合并)两个阶段,通常基于递归实现。</li>
<li>判断是否是分治算法问题的依据包括:问题能否分解、子问题是否独立、子问题能否合并。</li>
<li>归并排序是分治策略的典型应用,其递归地将数组划分为等长的两个子数组,直到只剩一个元素时开始逐层合并,从而完成排序。</li>
<li>引入分治策略往往可以带来算法效率的提升。一方面,分治策略减少了操作数量;另一方面,分治后有利于系统的并行优化。</li>
<li>引入分治策略往往可以提升算法效率。一方面,分治策略减少了操作数量;另一方面,分治后有利于系统的并行优化。</li>
<li>分治既可以解决许多算法问题,也广泛应用于数据结构与算法设计中,处处可见其身影。</li>
<li>相较于暴力搜索,自适应搜索效率更高。时间复杂度为 <span class="arithmatex">\(O(\log n)\)</span> 的搜索算法通常是基于分治策略实现的。</li>
<li>相较于暴力搜索,自适应搜索效率更高。时间复杂度为 <span class="arithmatex">\(O(\log n)\)</span> 的搜索算法通常是基于分治策略实现的。</li>
<li>二分查找是分治策略的另一个典型应用,它不包含将子问题的解进行合并的步骤。我们可以通过递归分治实现二分查找。</li>
<li>在构建二叉树问题中,构建树(原问题)可以划分为构建左子树和右子树(子问题),可以通过划分前序遍历和中序遍历的索引区间来实现。</li>
<li>在汉诺塔问题中,一个规模为 <span class="arithmatex">\(n\)</span> 的问题可以划分为两个规模为 <span class="arithmatex">\(n-1\)</span> 的子问题和一个规模为 <span class="arithmatex">\(1\)</span> 的子问题。按顺序解决这三个子问题后,原问题随之得到解决。</li>
<li>在构建二叉树问题中,构建树(原问题)可以划分为构建左子树和右子树(子问题),可以通过划分前序遍历和中序遍历的索引区间来实现。</li>
<li>在汉诺塔问题中,一个规模为 <span class="arithmatex">\(n\)</span> 的问题可以划分为两个规模为 <span class="arithmatex">\(n-1\)</span> 的子问题和一个规模为 <span class="arithmatex">\(1\)</span> 的子问题。按顺序解决这三个子问题后,原问题随之得到解决。</li>
</ul>
<!-- Source file information -->