影响hash Table design的3个factors:
(1)hash function(散列函数)
(2)Table size(散列的大小, 通常最开始是固定大小的)
(3)collision handling scheme(发生冲突的时候的处理机制)
一个“good” hash function 应该具有如下几点属性:
(1)reducing chance of collision
(2)should be fast to compute
处理冲突的办法:
(1)chaining
(2)open addressing
(3) double hashing
Etc
冲突解决办法的分析:
hash Table T 的 load factor(负载因子)定义如下:
如下图, 负载因子是: 10 / 10 = 1
使用open addressing 解决冲突, 会导致clustering。
此时一般而言, 负载率在0 到1 之间。
当我们采用线性探查的时候, 相关的分析如下:
二次探查如下: