首页 > 试题广场 >

假设把整数关键码K散列到有N个槽的散列表,以下那些散列函数是

[单选题]
假设把整数关键码K散列到有N个槽的散列表,以下那些散列函数是好的散列函数?
  • h(k)=k/n
  • h(k)=1
  • h(k)=k mod N
  • h(k)=(k + Random(N )) mod N;Random(N)返回一个0到N-1的整数
推荐
C

D中random(N)会造成hash后的数值不确定。
编辑于 2015-07-21 18:57:29 回复(4)
D中的随机取数有可能造成冲突,所以还是求模值比较好

发表于 2016-05-05 21:34:05 回复(0)
Hash函数不能加随机函数
发表于 2017-08-13 11:16:04 回复(0)

使用随机函数可以使得数更均匀随机地分布在各个槽中,但当查找时由于散列函数是个随机函数所以得到的值对应的槽内可能压根没有放关键码k

,可能会使得查找失败。

发表于 2018-12-20 21:40:55 回复(0)
我觉得大家理解有误。

我觉得正确理解是:
    我存的时候使用随机数,我去查找的时候再随机一遍,获得的地址不是原来存的地址,从而获得错误的值。
发表于 2023-08-01 20:50:54 回复(0)
A可能超过n B冲突 D过于随机不方便控制
发表于 2022-03-18 18:59:41 回复(0)
C

D中random(N)会造成hash后的数值不确定。
发表于 2020-07-14 15:43:55 回复(0)
d不对啊
发表于 2023-09-21 21:43:44 回复(0)
对于d来说N是卡槽数,一个定值,在c里面看这就随机数应该就是一个伪随机数,所以对于所有的关键码来说,它随机数种子是一个,会生成一个相同伪随机数数列,那就与线性排查没有区别了吧,会造成堆积,并且d的hash函数计算时间比其他还慢。 一点看法。
发表于 2022-04-22 21:13:13 回复(0)
A可能会大于n,找不到位置 B散列到同一位置大量冲突 C是一个好的函数 D随机性难以查找
发表于 2017-11-10 15:02:21 回复(0)
不是有一种解决冲突的方法叫伪随机序列法吗?
发表于 2017-10-30 17:43:45 回复(0)
好的散列函数要求:(1)计算简单,至少散列函数的计算时间不应该超过其他查找技术与关键字比较的时间;(2)计算出的散列地址分布均匀,这样可以保证存储空间的有效利用,并减少为处理冲突而耗费的时间。
发表于 2016-09-22 21:05:31 回复(0)
C  D的话是取随机数 有不确定性。
发表于 2015-07-25 14:39:47 回复(1)