第十一章 散列表

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 开放寻址法

所有元素存放在散列表中。
探查对性能影响巨大。
双重散列使得本来应该集羣的元素编程分隔的了。

点赞