mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-01 17:53:18 +08:00
deploy
This commit is contained in:
@@ -4085,7 +4085,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>总的来看,数组的插入与删除操作有以下缺点:</p>
|
||||
<p>总的来看,数组的插入与删除操作有以下缺点。</p>
|
||||
<ul>
|
||||
<li><strong>时间复杂度高</strong>:数组的插入和删除的平均时间复杂度均为 <span class="arithmatex">\(O(n)\)</span> ,其中 <span class="arithmatex">\(n\)</span> 为数组长度。</li>
|
||||
<li><strong>丢失元素</strong>:由于数组的长度不可变,因此在插入元素后,超出数组长度范围的元素会丢失。</li>
|
||||
@@ -4599,20 +4599,20 @@
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="412">4.1.2 数组优点与局限性<a class="headerlink" href="#412" title="Permanent link">¶</a></h2>
|
||||
<p>数组存储在连续的内存空间内,且元素类型相同。这包含丰富的先验信息,系统可以利用这些信息来优化操作和运行效率,包括:</p>
|
||||
<p>数组存储在连续的内存空间内,且元素类型相同。这种做法包含丰富的先验信息,系统可以利用这些信息来优化数据结构的操作效率。</p>
|
||||
<ul>
|
||||
<li><strong>空间效率高</strong>: 数组为数据分配了连续的内存块,无须额外的结构开销。</li>
|
||||
<li><strong>支持随机访问</strong>: 数组允许在 <span class="arithmatex">\(O(1)\)</span> 时间内访问任何元素。</li>
|
||||
<li><strong>缓存局部性</strong>: 当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速度。</li>
|
||||
</ul>
|
||||
<p>连续空间存储是一把双刃剑,它导致的缺点有:</p>
|
||||
<p>连续空间存储是一把双刃剑,其存在以下缺点。</p>
|
||||
<ul>
|
||||
<li><strong>插入与删除效率低</strong>:当数组中元素较多时,插入与删除操作需要移动大量的元素。</li>
|
||||
<li><strong>长度不可变</strong>: 数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大。</li>
|
||||
<li><strong>空间浪费</strong>: 如果数组分配的大小超过了实际所需,那么多余的空间就被浪费了。</li>
|
||||
</ul>
|
||||
<h2 id="413">4.1.3 数组典型应用<a class="headerlink" href="#413" title="Permanent link">¶</a></h2>
|
||||
<p>数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构,主要包括:</p>
|
||||
<p>数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。</p>
|
||||
<ul>
|
||||
<li><strong>随机访问</strong>:如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实现样本的随机抽取。</li>
|
||||
<li><strong>排序和搜索</strong>:数组是排序和搜索算法最常用的数据结构。快速排序、归并排序、二分查找等都主要在数组上进行。</li>
|
||||
|
||||
Reference in New Issue
Block a user