This commit is contained in:
krahets
2023-07-26 08:59:03 +08:00
parent fd34c845bc
commit 974fea7de4
48 changed files with 299 additions and 299 deletions
+4 -4
View File
@@ -3412,10 +3412,10 @@
<h2 id="833">8.3.3. &nbsp; 方法三:堆<a class="headerlink" href="#833" title="Permanent link">&para;</a></h2>
<p>我们可以基于堆更加高效地解决 Top-K 问题,流程如下:</p>
<ol>
<li>初始化一个小顶堆,其堆顶元素最小</li>
<li>先将数组的前 <span class="arithmatex">\(k\)</span> 个元素依次入堆</li>
<li>从第 <span class="arithmatex">\(k + 1\)</span> 个元素开始,若当前元素大于堆顶元素,则将堆顶元素出堆,并将当前元素入堆</li>
<li>遍历完成后,堆中保存的就是最大的 <span class="arithmatex">\(k\)</span> 个元素</li>
<li>初始化一个小顶堆,其堆顶元素最小</li>
<li>先将数组的前 <span class="arithmatex">\(k\)</span> 个元素依次入堆</li>
<li>从第 <span class="arithmatex">\(k + 1\)</span> 个元素开始,若当前元素大于堆顶元素,则将堆顶元素出堆,并将当前元素入堆</li>
<li>遍历完成后,堆中保存的就是最大的 <span class="arithmatex">\(k\)</span> 个元素</li>
</ol>
<div class="tabbed-set tabbed-alternate" data-tabs="1:9"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label></div>
<div class="tabbed-content">