散列日志
散列表的工作原理
散列表把数据存放在桶里。散列函数通过取模把每个键映射到桶索引。
当两个键落入同一个桶时,就发生冲突。好的散列函数把键均匀分散,差的(比如用字符串长度)会让键聚集。
试试这些实验:
-
切换到
length散列,加入长度不同的单词——看看长度相同的单词总会冲突 -
切换到
charSum,加入字母异位词(listen、silent)——它们的字符和相同,所以会冲突 - 把桶数调到2,看冲突如何堆积
- 比较
djb2与FNV-1a在同一组单词上的分布