首页 > 试题广场 >

设散列表中有 m 个存储单元,散列函数 H(key)= ke

[单选题]

设散列表中有 m 个存储单元,散列函数 H(key)= key % p ,则 p 最好选择( )。

  • 小于等于m的最大奇数
  • 小于等于m的最大素数
  • 小于等于m的最大偶数
  • 小于等于m的最大合数
b
发表于 2023-09-21 21:49:03 回复(0)
【1】 奇数、偶数、合数都可能分解成两个数相乘的形式(除了1x本身);而素数只能分解成1x本身。 【2】 若key是随机分布的,则不管p取小于等于m的最大奇数、素数、偶数还是合数,H(key)将较均匀的映射到0~m-1的存储单元;若key的分布具有某种规律,若m取小于等于m的最大素数,依然能较好的映射。 【3】 严蔚敏《数据结构》:一般情况下,可以选p为质数或不包含小于20的质因数的合数。
发表于 2018-01-06 13:22:30 回复(4)
  • p 通常选择为质数,以减少散列冲突的发生。
  • 假设要存储的关键字数量为 n,那么最理想的情况是,p 应该大于 n,且 m 要比 n 略大,以保证散列表有足够的存储空间。
  • 另外,如果 p 不够大,那么相同的关键字可能对应相同的散列值,从而造成散列冲突。因此,p 选择太小也不好。
发表于 2023-01-30 16:18:39 回复(0)
B   小于等于m的最大素数
发表于 2022-11-16 09:59:34 回复(0)
B   小于等于m的最大素数
发表于 2017-09-19 11:41:02 回复(0)