Skip to content

Commit 0670c4c

Browse files
docs: update dsa-ds-array
1 parent 87514a1 commit 0670c4c

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

docs/notes/dsa/ds/linear/array.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,32 @@ def array_extend(nums: list[int], enlarge: int) -> list[int]:
177177

178178
## 顺序表的优缺点
179179

180-
<div style="text-align: center;">
180+
### 优点
181+
182+
- **空间效率高**:元素存储在**连续的内存空间**,且无需考虑因为表示表中元素之间的逻辑关系而**产生额外的结构开销**
183+
184+
- **支持随机访问**:可在 $O(1)$ 时间内访问表中的任意元素
185+
186+
### 缺点
187+
188+
- **插入与删除效率低**:执行插入或删除元素操作时需要大批量移动表中元素,时间复杂度为 $O(n)$
189+
190+
- **定长数组模型约束**:当线性表长度变化较大时,难以确定存储空间的容量;若需扩容,开销很大
191+
192+
- **空间利用率不高**
193+
194+
- 静态分配(基于定长数组)时大小可能会超过实际需求,造成**内部内存碎片化**
195+
196+
- 动态扩容(基于动态数组)时,编程语言的扩容策略会导致一些空间浪费,形成**外部内存碎片**
197+
198+
!!! tip
199+
- 空间效率 $\not =$ 空间利用率
200+
201+
- **内部内存碎片**:指分配的内存块中未被使用的部分。上面指的是在基于数组初始化一个顺序表时分配了固定大小的空间但未完全利用
202+
203+
- **外部内存碎片**:指内存中存在多个小的、不连续的空闲内存块,无法分配给较大的连续内存需求。上面指当(基于动态数组的)顺序表容量不足时在重新分配一块更大的连续内存,将原有元素复制到新内存,然后释放旧内存的过程中形成的小的、不连续的空闲内存块
204+
205+
206+
<!-- <div style="text-align: center;">
181207
🚧前方施工中🚧
182-
</div>
208+
</div> -->

0 commit comments

Comments
 (0)