mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 10:39:54 +08:00
Refactor the articles related to searching algorithm. Add the chapter of binary search. Add the section of searching algorithm revisited. (#464)
This commit is contained in:
@@ -6,24 +6,17 @@
|
||||
|
||||

|
||||
|
||||
## 哈希表效率
|
||||
除哈希表外,我们还可以使用数组或链表实现查询功能,各项操作的时间复杂度如下表所示。
|
||||
|
||||
除哈希表外,还可以使用以下数据结构来实现上述查询功能:
|
||||
|
||||
1. **无序数组**:每个元素为 `[学号, 姓名]` ;
|
||||
2. **有序数组**:将 `1.` 中的数组按照学号从小到大排序;
|
||||
3. **链表**:每个节点的值为 `[学号, 姓名]` ;
|
||||
4. **二叉搜索树**:每个节点的值为 `[学号, 姓名]` ,根据学号大小来构建树;
|
||||
|
||||
各项操作的时间复杂度如下表所示(详解可见[二叉搜索树章节](https://www.hello-algo.com/chapter_tree/binary_search_tree/))。无论是查找元素还是增删元素,哈希表的时间复杂度都是 $O(1)$ ,全面胜出!
|
||||
在哈希表中增删查改的时间复杂度都是 $O(1)$ ,全面胜出!因此,哈希表常用于对查找效率要求较高的场景。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
| | 无序数组 | 有序数组 | 链表 | 二叉搜索树 | 哈希表 |
|
||||
| -------- | -------- | ----------- | ------ | ----------- | ------ |
|
||||
| 查找元素 | $O(n)$ | $O(\log n)$ | $O(n)$ | $O(\log n)$ | $O(1)$ |
|
||||
| 插入元素 | $O(1)$ | $O(n)$ | $O(1)$ | $O(\log n)$ | $O(1)$ |
|
||||
| 删除元素 | $O(n)$ | $O(n)$ | $O(n)$ | $O(\log n)$ | $O(1)$ |
|
||||
| | 数组 | 链表 | 哈希表 |
|
||||
| -------- | ------ | ------ | ------ |
|
||||
| 查找元素 | $O(n)$ | $O(n)$ | $O(1)$ |
|
||||
| 插入元素 | $O(1)$ | $O(1)$ | $O(1)$ |
|
||||
| 删除元素 | $O(n)$ | $O(n)$ | $O(1)$ |
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user