mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 09:49:49 +08:00
build
This commit is contained in:
@@ -26,6 +26,8 @@ comments: true
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 链式地址 </p>
|
||||
|
||||
链式地址下,哈希表操作方法为:
|
||||
|
||||
- **查询元素**:先将 key 输入到哈希函数得到桶内索引,即可访问链表头结点,再通过遍历链表查找对应 value 。
|
||||
@@ -56,6 +58,8 @@ comments: true
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 线性探测 </p>
|
||||
|
||||
线性探测存在以下缺陷:
|
||||
|
||||
- **不能直接删除元素**。删除元素会导致桶内出现一个空位,在查找其他元素时,该空位有可能导致程序认为元素不存在(即上述第 `2.` 种情况)。因此需要借助一个标志位来标记删除元素。
|
||||
|
||||
@@ -10,6 +10,8 @@ comments: true
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 哈希表的抽象表示 </p>
|
||||
|
||||
## 6.1.1. 哈希表效率
|
||||
|
||||
除了哈希表之外,还可以使用以下数据结构来实现上述查询功能:
|
||||
@@ -408,6 +410,8 @@ $$
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 简单哈希函数示例 </p>
|
||||
|
||||
=== "Java"
|
||||
|
||||
```java title="array_hash_map.java"
|
||||
@@ -1273,6 +1277,8 @@ $$
|
||||
|
||||

|
||||
|
||||
<p align="center"> Fig. 哈希冲突示例 </p>
|
||||
|
||||
综上所述,一个优秀的「哈希函数」应该具备以下特性:
|
||||
|
||||
- 尽量少地发生哈希冲突;
|
||||
|
||||
Reference in New Issue
Block a user