This commit is contained in:
krahets
2023-06-25 21:11:44 +08:00
parent 0b6f239630
commit 5a61bb028f
22 changed files with 1067 additions and 207 deletions

View File

@ -1294,10 +1294,41 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
8.4. &nbsp; 小结
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
8.4. &nbsp; 小结
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#841-q-a" class="md-nav__link">
8.4.1. &nbsp; Q &amp; A
</a>
</li>
</ul>
</nav>
</li>
@ -2051,6 +2082,21 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#841-q-a" class="md-nav__link">
8.4.1. &nbsp; Q &amp; A
</a>
</li>
</ul>
</nav>
</div>
</div>
@ -2080,7 +2126,13 @@
<li>完全二叉树非常适合用数组表示,因此我们通常使用数组来存储堆。</li>
<li>堆化操作用于维护堆的性质,在入堆和出堆操作中都会用到。</li>
<li>输入 <span class="arithmatex">\(n\)</span> 个元素并建堆的时间复杂度可以优化至 <span class="arithmatex">\(O(n)\)</span> ,非常高效。</li>
<li>Top-K 是一个经典算法问题,可以使用堆数据结构高效解决,时间复杂度为 <span class="arithmatex">\(O(n \log k)\)</span></li>
</ul>
<h2 id="841-q-a">8.4.1. &nbsp; Q &amp; A<a class="headerlink" href="#841-q-a" title="Permanent link">&para;</a></h2>
<div class="admonition question">
<p class="admonition-title">数据结构的“堆”与内存管理的“堆”是同一个概念吗?</p>
<p>两者不是同一个概念,只是碰巧都叫堆。计算机系统内存中的堆是动态内存分配的一部分,程序在运行时可以使用它来存储数据。程序可以请求一定量的堆内存,用于存储如对象和数组等复杂结构。当这些数据不再需要时,程序需要释放这些内存,以防止内存泄露。相较于栈内存,堆内存的管理和使用需要更谨慎,不恰当的使用可能会导致内存泄露和野指针等问题。</p>
</div>