This commit is contained in:
krahets
2023-04-07 22:32:13 +08:00
parent c515efea8b
commit 54b72a3ac9
14 changed files with 226 additions and 229 deletions

View File

@ -1681,11 +1681,11 @@
<h1 id="44">4.4. &nbsp; 小结<a class="headerlink" href="#44" title="Permanent link">&para;</a></h1>
<ul>
<li>数组和链表是两种基本数据结构,代表数据在计算机内存中的两种存储方式,即连续空间存储和离散空间存储。两者的优点与缺点呈现出此消彼长的关系</li>
<li>数组支持随机访问、内存空间占用小;但插入删除元素效率低,且初始化后长度不可变。</li>
<li>链表通过更改指针实现高效的结点插入与删除,且可以灵活地修改长度;但结点访问效率低、占用内存多。常见的链表类型单向链表、循环链表、双向链表。</li>
<li>列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,可以灵活改变长度。列表的出现大大提升了数组的用性,但副作用是会造成部分内存空间浪费。</li>
<li>下表总结对比了数组与链表的各项特性。</li>
<li>数组和链表是两种基本数据结构,分别代表数据在计算机内存中的连续空间存储和离散空间存储方式。两者的优缺点呈现出互补的特性</li>
<li>数组支持随机访问、占用内存较少;但插入删除元素效率低,且初始化后长度不可变。</li>
<li>链表通过更改指针实现高效的结点插入与删除,且可以灵活调整长度;但结点访问效率低、占用内存多。常见的链表类型包括单向链表、循环链表、双向链表。</li>
<li>动态数组,又称列表,是基于数组实现的一种数据结构。它保留了数组的优势,同时可以灵活调整长度。列表的出现极大地提高了数组的用性,但可能导致部分内存空间浪费。</li>
<li>下表总结对比了数组与链表的各项特性。</li>
</ul>
<div class="center-table">
<table>
@ -1720,12 +1720,12 @@
</tbody>
</table>
</div>
<div class="admonition question">
<p class="admonition-title">缓存局部性的简单解释</p>
<div class="admonition note">
<p class="admonition-title">缓存局部性</p>
<p>在计算机中,数据读写速度排序是“硬盘 &lt; 内存 &lt; CPU 缓存”。当我们访问数组元素时,计算机不仅会加载它,还会缓存其周围的其它数据,从而借助高速缓存来提升后续操作的执行速度。链表则不然,计算机只能挨个地缓存各个结点,这样的多次“搬运”降低了整体效率。</p>
</div>
<ul>
<li>下表对比了数组与链表各种操作效率。</li>
<li>下表对比了数组与链表各种操作上的效率。</li>
</ul>
<div class="center-table">
<table>