pull/944/head
krahets 2 years ago
parent adfb4e093e
commit 05bbf42d18

@ -4,7 +4,7 @@ comments: true
# 3.5.   小结 # 3.5.   小结
## 3.5.1.   快速回顾 ## 3.5.1.   知识回顾
### 数据结构分类 ### 数据结构分类

@ -403,9 +403,11 @@ comments: true
以学生数据 `key 学号 -> value 姓名` 为例,我们可以设计如下哈希函数: 以学生数据 `key 学号 -> value 姓名` 为例,我们可以设计如下哈希函数:
$$ $$
f(x) = x \% 100 f(x) = x \bmod {100}
$$ $$
其中 $\bmod$ 表示取余运算。
![哈希函数工作原理](hash_map.assets/hash_function.png) ![哈希函数工作原理](hash_map.assets/hash_function.png)
<p align="center"> Fig. 哈希函数工作原理 </p> <p align="center"> Fig. 哈希函数工作原理 </p>
@ -1263,7 +1265,7 @@ $$
## 7.1.3. &nbsp; 哈希冲突 ## 7.1.3. &nbsp; 哈希冲突
细心的你可能已经注意到,**在某些情况下,哈希函数 $f(x) = x % 100$ 可能无法正常工作**。具体来说,当输入的 key 后两位相同时,哈希函数的计算结果也会相同,从而指向同一个 value 。例如,查询学号为 $12836$ 和 $20336$ 的两个学生时,我们得到: 细心的你可能已经注意到,**在某些情况下,哈希函数 $f(x) = x \bmod 100$ 可能无法正常工作**。具体来说,当输入的 key 后两位相同时,哈希函数的计算结果也会相同,从而指向同一个 value 。例如,查询学号为 $12836$ 和 $20336$ 的两个学生时,我们得到:
$$ $$
f(12836) = f(20336) = 36 f(12836) = f(20336) = 36

@ -23,10 +23,10 @@ comments: true
下面来剖析代码实现。对于一个 $d$ 进制的数字 $x$ ,要获取其第 $k$ 位 $x_k$ ,可以使用以下计算公式: 下面来剖析代码实现。对于一个 $d$ 进制的数字 $x$ ,要获取其第 $k$ 位 $x_k$ ,可以使用以下计算公式:
$$ $$
x_k = \lfloor\frac{x}{d^{k-1}}\rfloor \mod d x_k = \lfloor\frac{x}{d^{k-1}}\rfloor \bmod d
$$ $$
其中 $\lfloor a \rfloor$ 表示对浮点数 $a$ 向下取整,而 $\mod d$ 表示对 $d$ 取余。对于学号数据,$d = 10$ 且 $k \in [1, 8]$ 。 其中 $\lfloor a \rfloor$ 表示对浮点数 $a$ 向下取整,而 $\bmod \space d$ 表示对 $d$ 取余。对于学号数据,$d = 10$ 且 $k \in [1, 8]$ 。
此外,我们需要小幅改动计数排序代码,使之可以根据数字的第 $k$ 位进行排序。 此外,我们需要小幅改动计数排序代码,使之可以根据数字的第 $k$ 位进行排序。

Loading…
Cancel
Save