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