设散列表中有n个存储单元,散列函数H(key)=key%p,则p最好选择小于散列表长度n的( )
A、
奇数
B、
素数
C、
偶数
D、
合数
【正确答案】:B
【题目解析】:
在常用的散列法中,除留余数法是一种简单有效且最常用的构造方法,其方法是选择一个不大于散列表长n的正整数p,以键值除以p所得的余数作为散列地址,即H(key) = key mod p (p≤n)。
mod是取余数运算,关键在于p的取值,若p选的不合适,容易发生冲突。如选p为偶数,则所得的散列函数总是将奇数键值映射成奇数地址,偶数键值映射为偶数地址,因而增加了冲突的机会。通常选p为小于散列表长度n的素数。
故本题选B。