mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-24 12:06:07 +00:00
deploy
This commit is contained in:
@@ -1719,7 +1719,7 @@
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
8.3 Top-K 问题
|
||||
8.3 Top-k 问题
|
||||
</span>
|
||||
|
||||
|
||||
@@ -3601,7 +3601,7 @@
|
||||
<li><strong>子问题是独立的</strong>:子问题之间没有重叠,互不依赖,可以独立解决。</li>
|
||||
<li><strong>子问题的解可以合并</strong>:原问题的解通过合并子问题的解得来。</li>
|
||||
</ol>
|
||||
<p>显然,归并排序满足以上三条判断依据。</p>
|
||||
<p>显然,归并排序满足以上三个判断依据。</p>
|
||||
<ol>
|
||||
<li><strong>问题可以分解</strong>:递归地将数组(原问题)划分为两个子数组(子问题)。</li>
|
||||
<li><strong>子问题是独立的</strong>:每个子数组都可以独立地进行排序(子问题可以独立进行求解)。</li>
|
||||
@@ -3645,7 +3645,7 @@ n(n - 4) & > 0
|
||||
<li><strong>汉诺塔问题</strong>:汉诺塔问题可以通过递归解决,这是典型的分治策略应用。</li>
|
||||
<li><strong>求解逆序对</strong>:在一个序列中,如果前面的数字大于后面的数字,那么这两个数字构成一个逆序对。求解逆序对问题可以利用分治的思想,借助归并排序进行求解。</li>
|
||||
</ul>
|
||||
<p>另一方面,分治在算法和数据结构的设计中应用非常广泛。</p>
|
||||
<p>另一方面,分治在算法和数据结构的设计中应用得非常广泛。</p>
|
||||
<ul>
|
||||
<li><strong>二分查找</strong>:二分查找是将有序数组从中点索引处分为两部分,然后根据目标值与中间元素值比较结果,决定排除哪一半区间,并在剩余区间执行相同的二分操作。</li>
|
||||
<li><strong>归并排序</strong>:本节开头已介绍,不再赘述。</li>
|
||||
@@ -3653,7 +3653,7 @@ n(n - 4) & > 0
|
||||
<li><strong>桶排序</strong>:桶排序的基本思想是将数据分散到多个桶,然后对每个桶内的元素进行排序,最后将各个桶的元素依次取出,从而得到一个有序数组。</li>
|
||||
<li><strong>树</strong>:例如二叉搜索树、AVL 树、红黑树、B 树、B+ 树等,它们的查找、插入和删除等操作都可以视为分治策略的应用。</li>
|
||||
<li><strong>堆</strong>:堆是一种特殊的完全二叉树,其各种操作,如插入、删除和堆化,实际上都隐含了分治的思想。</li>
|
||||
<li><strong>哈希表</strong>:虽然哈希表来并不直接应用分治,但某些哈希冲突解决方案间接应用了分治策略,例如,链式地址中的长链表会被转化为红黑树,以提升查询效率。</li>
|
||||
<li><strong>哈希表</strong>:虽然哈希表并不直接应用分治,但某些哈希冲突解决方案间接应用了分治策略,例如,链式地址中的长链表会被转化为红黑树,以提升查询效率。</li>
|
||||
</ul>
|
||||
<p>可以看出,<strong>分治是一种“润物细无声”的算法思想</strong>,隐含在各种算法与数据结构之中。</p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user