Revised the book. (#987)

This commit is contained in:
Yudong Jin
2023-12-14 02:42:53 +08:00
committed by GitHub
parent d67c458caa
commit ed4de4644f
18 changed files with 58 additions and 58 deletions
+3 -3
View File
@@ -78,10 +78,10 @@
平方探测主要具有以下优势。
- 平方探测通过跳过平方的距离,试图缓解线性探测的聚集效应。
- 平方探测通过跳过探测次数平方的距离,试图缓解线性探测的聚集效应。
- 平方探测会跳过更大的距离来寻找空位置,有助于数据分布得更加均匀。
然而,平方探测并不是完美的。
然而,平方探测并不是完美的。
- 仍然存在聚集现象,即某些位置比其他位置更容易被占用。
- 由于平方的增长,平方探测可能不会探测整个哈希表,这意味着即使哈希表中有空桶,平方探测也可能无法访问到它。
@@ -101,7 +101,7 @@
## 编程语言的选择
编程语言采取了不同的哈希表实现策略,下举几个例子。
编程语言采取了不同的哈希表实现策略,下举几个例子。
- Python 采用开放寻址。字典 dict 使用伪随机数进行探测。
- Java 采用链式地址。自 JDK 1.8 以来,当 HashMap 内数组长度达到 64 且链表长度达到 8 时,链表会转换为红黑树以提升查找性能。
+1 -1
View File
@@ -18,7 +18,7 @@
### Q & A
!!! question "哈希表的时间复杂度什么是 $O(n)$ "
!!! question "哈希表的时间复杂度什么情况下是 $O(n)$ "
当哈希冲突比较严重时,哈希表的时间复杂度会退化至 $O(n)$ 。当哈希函数设计得比较好、容量设置比较合理、冲突比较平均时,时间复杂度是 $O(1)$ 。我们使用编程语言内置的哈希表时,通常认为时间复杂度是 $O(1)$ 。