Add the chapter of hash map.
This commit is contained in:
@@ -566,7 +566,7 @@ comments: true
|
||||
|
||||
假设给定 $n$ 个数字,最常用的存储方式是「数组」,那么对于这串乱序的数字,常见操作的效率为:
|
||||
|
||||
- **查找元素:** 由于数组是乱序的,因此需要遍历数组来确定,使用 $O(n)$ 时间;
|
||||
- **查找元素:** 由于数组是无序的,因此需要遍历数组来确定,使用 $O(n)$ 时间;
|
||||
- **插入元素:** 只需将元素添加至数组尾部即可,使用 $O(1)$ 时间;
|
||||
- **删除元素:** 先查找元素,使用 $O(\log n)$ 时间,再在数组中删除该元素,使用 $O(n)$ 时间;
|
||||
- **获取最小 / 最大元素:** 需要遍历数组来确定,使用 $O(n)$ 时间;
|
||||
@@ -575,14 +575,14 @@ comments: true
|
||||
|
||||
- **查找元素:** 由于数组已排序,可以使用二分查找,使用 $O(\log n)$ 时间;
|
||||
- **插入元素:** 为了保持数组是有序的,需插入到数组某位置,平均使用 $O(n)$ 时间;
|
||||
- **删除元素:** 与乱序数组中的情况相同,使用 $O(n)$ 时间;
|
||||
- **删除元素:** 与无序数组中的情况相同,使用 $O(n)$ 时间;
|
||||
- **获取最小 / 最大元素:** 数组头部和尾部元素即是最小和最大元素,使用 $O(1)$ 时间;
|
||||
|
||||
观察发现,乱序数组和排序数组中的各类操作的时间复杂度是 “偏科” 的,即有的快有的慢;**而二叉搜索树的各项操作的时间复杂度都是对数阶,在数据量 $n$ 很大时有巨大优势**。
|
||||
观察发现,无序数组和有序数组中的各类操作的时间复杂度是 “偏科” 的,即有的快有的慢;**而二叉搜索树的各项操作的时间复杂度都是对数阶,在数据量 $n$ 很大时有巨大优势**。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
| | 乱序数组 | 排序数组 | 二叉搜索树 |
|
||||
| | 无序数组 | 有序数组 | 二叉搜索树 |
|
||||
| ------------------- | -------- | ----------- | ----------- |
|
||||
| 查找指定元素 | $O(n)$ | $O(\log n)$ | $O(\log n)$ |
|
||||
| 插入元素 | $O(1)$ | $O(n)$ | $O(\log n)$ |
|
||||
|
Reference in New Issue
Block a user