Modify 。** to **。 for better visualization.

This commit is contained in:
Yudong Jin
2023-01-07 20:34:32 +08:00
parent fc4d7e5e3b
commit 694ea4f665
22 changed files with 252 additions and 220 deletions
+7 -7
View File
@@ -4,13 +4,13 @@ comments: true
# 列表
**由于长度不可变,数组的实用性大大降低** 在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。
**由于长度不可变,数组的实用性大大降低**在很多情况下,我们事先并不知道会输入多少数据,这就为数组长度的选择带来了很大困难。长度选小了,需要在添加数据中频繁地扩容数组;长度选大了,又造成内存空间的浪费。
为了解决此问题,诞生了一种被称为「列表 List」的数据结构。列表可以被理解为长度可变的数组,因此也常被称为「动态数组 Dynamic Array」。列表基于数组实现,继承了数组的优点,同时还可以在程序运行中实时扩容。在列表中,我们可以自由地添加元素,而不用担心超过容量限制。
## 列表常用操作
**初始化列表** 我们通常会使用到“无初始值”和“有初始值”的两种初始化方法。
**初始化列表**我们通常会使用到“无初始值”和“有初始值”的两种初始化方法。
=== "Java"
@@ -91,7 +91,7 @@ comments: true
List<int> list = numbers.ToList();
```
**访问与更新元素** 列表的底层数据结构是数组,因此可以在 $O(1)$ 时间内访问与更新元素,效率很高。
**访问与更新元素**列表的底层数据结构是数组,因此可以在 $O(1)$ 时间内访问与更新元素,效率很高。
=== "Java"
@@ -169,7 +169,7 @@ comments: true
list[1] = 0; // 将索引 1 处的元素更新为 0
```
**在列表中添加、插入、删除元素** 相对于数组,列表可以自由地添加与删除元素。在列表尾部添加元素的时间复杂度为 $O(1)$ ,但是插入与删除元素的效率仍与数组一样低,时间复杂度为 $O(N)$ 。
**在列表中添加、插入、删除元素**相对于数组,列表可以自由地添加与删除元素。在列表尾部添加元素的时间复杂度为 $O(1)$ ,但是插入与删除元素的效率仍与数组一样低,时间复杂度为 $O(N)$ 。
=== "Java"
@@ -317,7 +317,7 @@ comments: true
list.RemoveAt(3);
```
**遍历列表** 与数组一样,列表可以使用索引遍历,也可以使用 `for-each` 直接遍历。
**遍历列表**与数组一样,列表可以使用索引遍历,也可以使用 `for-each` 直接遍历。
=== "Java"
@@ -437,7 +437,7 @@ comments: true
}
```
**拼接两个列表** 再创建一个新列表 `list1` ,我们可以将其中一个列表拼接到另一个的尾部。
**拼接两个列表**再创建一个新列表 `list1` ,我们可以将其中一个列表拼接到另一个的尾部。
=== "Java"
@@ -502,7 +502,7 @@ comments: true
list.AddRange(list1); // 将列表 list1 拼接到 list 之后
```
**排序列表** 排序也是常用的方法之一,完成列表排序后,我们就可以使用在数组类算法题中经常考察的「二分查找」和「双指针」算法了。
**排序列表**排序也是常用的方法之一,完成列表排序后,我们就可以使用在数组类算法题中经常考察的「二分查找」和「双指针」算法了。
=== "Java"