11.1 直接寻址表
练习
11.1-2 位向量表示集合,集合中元素关键字对应位向量的序号,若关键字存在,则为1,否则为0。
11.2 散列表
双向链表的删除是 O(1) 的,因为删除是以元素的地址为输入的,故有此结论。
槽数应该与表中的元素数成正比。
11.3 散列函数
目标是简单均匀。
一般需要关键字是自然数,如果不是则先转换。
11.3.1 除法散列法
m的值选不接近2的幂的素数较好。
11.3.2 乘法散列法
h(k)=⌊m(kAmod1)⌋,0<A<1
m一般选择2的幂。A取黄金分割。
11.3.3 全域散列法
随机选择散列函数。
注意其中常数a,b的选择会使函数形成函数簇。
11.4 开放寻址法
所有元素存放在散列表中。
探查对性能影响巨大。
双重散列使得本来应该集羣的元素编程分隔的了。