【发布时间】:2016-07-12 18:12:45
【问题描述】:
使用线性探测时,为什么不能为哈希表选择 1.1 的负载因子阈值? 这应该适用于所有数字吗?
【问题讨论】:
-
1.1的负载系数意味着没有。条目数 > 没有。导致溢出的桶数。你到底想问什么?
标签: c++ data-structures hashtable
使用线性探测时,为什么不能为哈希表选择 1.1 的负载因子阈值? 这应该适用于所有数字吗?
【问题讨论】:
1.1 的负载系数意味着没有。条目数 > 没有。导致溢出的桶数。你到底想问什么?
标签: c++ data-structures hashtable
我不知道为什么我忘记了这一点,但感谢 izaak_pyzaak 提醒我。
如果您使用线性探测,我将假设您没有链接您的哈希表。
正如 Arunmu 所指出的,如果负载阈值大于 1,未链接的哈希表将溢出。这至少会破坏哈希表,并可能导致程序崩溃。
在大多数情况下,哈希表的最大负载因子设置为 0.75,因为大于 0.75 的负载会开始影响性能,并以指数方式增加表中的冲突数量。通常,大多数表应该比预期的记录数量大 2-3 倍,以减少冲突。
加载因子为 1 意味着哈希表在调整大小时已完全填满;在调整大小之前,它会导致对表的散列/搜索速度降低。如前所述,未链接的哈希表上的负载因子为 1.1 将是一个主要问题。
【讨论】:
我可能部分(或根本不)理解这个问题,但是......
这是因为你不能有 1.1 元素。您要么有 1 个或 0 个(或 2、3、4 ... n)个元素。同样,你也不能有 5.5 个元素;你可以有 5 个或 6 个,但不能介于两者之间。如果您希望在 1 个元素之后增加阈值,只需将阈值设为 1。
【讨论】: