哈希表线性探测数据结构

时间:2016-07-12 18:12:46

标签: c++ data-structures hashtable

使用线性探测时,为什么可以为哈希表选择1.1的加载因子阈值? 这应该适用于所有数字吗?

2 个答案:

答案 0 :(得分:0)

我可能不会部分地理解这​​个问题,(或者根本没有。)但是......

这是因为你不能拥有1.1个元素。你有1或0(或2,3,4 ...... n)元素。同样,你也不能拥有5.5个元素;你可以有5或6,但不能介于两者之间。如果您希望在1个元素后增加阈值,只需设置阈值1。

答案 1 :(得分:0)

我不知道为什么我忘了这个,但感谢izaak_pyzaak提醒我。

如果您正在使用线性探测,我将假设您不是链接您的哈希表

正如Arunmu指出的那样,如果加载阈值大于1,则未链接的哈希表将会溢出。这将至少破坏哈希表,并可能导致程序崩溃。

大多数情况下,哈希表是在最大加载因子设置为0.75的情况下实现的,因为大于0.75的加载开始是性能损失,并且指数增加表中的冲突量。通常,大多数表应该比预期的记录量大2-3倍,以减少冲突。

加载因子为1表示哈希表在调整大小时完全填充;在调整大小之前,它会导致在桌面上散列/搜索的速度降低。如前所述,未链接的哈希表上的加载因子为1.1将是一个主要问题。