【问题标题】:Hash table linear probing data structure哈希表线性探测数据结构
【发布时间】:2016-07-12 18:12:45
【问题描述】:

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

【问题讨论】:

  • 1.1 的负载系数意味着没有。条目数 > 没有。导致溢出的桶数。你到底想问什么?

标签: c++ data-structures hashtable


【解决方案1】:

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

如果您使用线性探测,我将假设您没有链接您的哈希表

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 加载因子是 (n/m),其中 n 是元素的数量,m 是指针表的大小(如果是链表和链表)。因此,1.1 的负载因子是可能的
    • 啊-谢谢你教育我。我会保留我的错误答案,因为我确信有人同样不理解。
    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 2011-02-07
    • 2018-12-30
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多