Hash table 线性探测数据结构

Hash table linear probing data structure

使用线性探测时,为什么不能为哈希选择负载因子阈值 1.1 table? 这应该适用于所有数字吗?

我可能部分不理解这个问题,(或根本不理解。)但是...

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

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

如果您使用线性探测,我将假设您没有链接您的散列table

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

大多数时候,哈希 tables 是在最大负载因子设置为 0.75 的情况下实现的,因为大于 0.75 的负载开始对性能造成影响,并以指数方式增加冲突的数量table。通常,大多数 tables 应该比预期的记录量大 2-3 倍,以减少冲突。

负载因子为 1 意味着散列 table 在调整大小时完全填满;在调整大小之前,它会导致 hashing/searching 在 table 上的速度降低。如前所述,未链接哈希 table 的负载因子为 1.1 将是一个主要问题。