mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-04 19:20:52 +08:00
build
This commit is contained in:
@@ -12,7 +12,7 @@ comments: true
|
||||
|
||||
## 4.1.1 数组常用操作
|
||||
|
||||
### 初始化数组
|
||||
### 1. 初始化数组
|
||||
|
||||
我们可以根据需求选用数组的两种初始化方式:无初始值、给定初始值。在未指定初始值的情况下,大多数编程语言会将数组元素初始化为 $0$ 。
|
||||
|
||||
@@ -118,7 +118,7 @@ comments: true
|
||||
let nums: Vec<i32> = vec![1, 3, 2, 5, 4];
|
||||
```
|
||||
|
||||
### 访问元素
|
||||
### 2. 访问元素
|
||||
|
||||
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用以下公式计算得到该元素的内存地址,从而直接访问此元素。
|
||||
|
||||
@@ -291,7 +291,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
|
||||
}
|
||||
```
|
||||
|
||||
### 插入元素
|
||||
### 3. 插入元素
|
||||
|
||||
数组元素在内存中是“紧挨着的”,它们之间没有空间再存放任何数据。这意味着如果想要在数组中间插入一个元素,则需要将该元素之后的所有元素都向后移动一位,之后再把元素赋值给该索引。
|
||||
|
||||
@@ -468,7 +468,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
|
||||
}
|
||||
```
|
||||
|
||||
### 删除元素
|
||||
### 4. 删除元素
|
||||
|
||||
同理,如果我们想要删除索引 $i$ 处的元素,则需要把索引 $i$ 之后的元素都向前移动一位。
|
||||
|
||||
@@ -629,7 +629,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
|
||||
- **丢失元素**:由于数组的长度不可变,因此在插入元素后,超出数组长度范围的元素会丢失。
|
||||
- **内存浪费**:我们可以初始化一个比较长的数组,只用前面一部分,这样在插入数据时,丢失的末尾元素都是“无意义”的,但这样做也会造成部分内存空间的浪费。
|
||||
|
||||
### 遍历数组
|
||||
### 5. 遍历数组
|
||||
|
||||
在大多数编程语言中,我们既可以通过索引遍历数组,也可以直接遍历获取数组中的每个元素。
|
||||
|
||||
@@ -836,7 +836,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
|
||||
}
|
||||
```
|
||||
|
||||
### 查找元素
|
||||
### 6. 查找元素
|
||||
|
||||
在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。
|
||||
|
||||
@@ -999,7 +999,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
|
||||
}
|
||||
```
|
||||
|
||||
### 扩容数组
|
||||
### 7. 扩容数组
|
||||
|
||||
在复杂的系统环境中,程序难以保证数组之后的内存空间是可用的,从而无法安全地扩展数组容量。因此在大多数编程语言中,**数组的长度是不可变的**。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user