mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-26 23:36:28 +08:00
build
This commit is contained in:
parent
adfb4e093e
commit
05bbf42d18
3 changed files with 7 additions and 5 deletions
|
@ -4,7 +4,7 @@ comments: true
|
|||
|
||||
# 3.5. 小结
|
||||
|
||||
## 3.5.1. 快速回顾
|
||||
## 3.5.1. 知识回顾
|
||||
|
||||
### 数据结构分类
|
||||
|
||||
|
|
|
@ -403,9 +403,11 @@ comments: true
|
|||
以学生数据 `key 学号 -> value 姓名` 为例,我们可以设计如下哈希函数:
|
||||
|
||||
$$
|
||||
f(x) = x \% 100
|
||||
f(x) = x \bmod {100}
|
||||
$$
|
||||
|
||||
其中 $\bmod$ 表示取余运算。
|
||||
|
||||
![哈希函数工作原理](hash_map.assets/hash_function.png)
|
||||
|
||||
<p align="center"> Fig. 哈希函数工作原理 </p>
|
||||
|
@ -1263,7 +1265,7 @@ $$
|
|||
|
||||
## 7.1.3. 哈希冲突
|
||||
|
||||
细心的你可能已经注意到,**在某些情况下,哈希函数 $f(x) = x % 100$ 可能无法正常工作**。具体来说,当输入的 key 后两位相同时,哈希函数的计算结果也会相同,从而指向同一个 value 。例如,查询学号为 $12836$ 和 $20336$ 的两个学生时,我们得到:
|
||||
细心的你可能已经注意到,**在某些情况下,哈希函数 $f(x) = x \bmod 100$ 可能无法正常工作**。具体来说,当输入的 key 后两位相同时,哈希函数的计算结果也会相同,从而指向同一个 value 。例如,查询学号为 $12836$ 和 $20336$ 的两个学生时,我们得到:
|
||||
|
||||
$$
|
||||
f(12836) = f(20336) = 36
|
||||
|
|
|
@ -23,10 +23,10 @@ comments: true
|
|||
下面来剖析代码实现。对于一个 $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$ 位进行排序。
|
||||
|
||||
|
|
Loading…
Reference in a new issue