C++ 哈希表线性探测数据结构

C++ 哈希表线性探测数据结构,c++,data-structures,hashtable,C++,Data Structures,Hashtable,使用线性探测时,为什么不能为哈希表选择1.1的负载因子阈值? 这应该适用于所有的数字吗?我可能部分(或根本)不理解这个问题,但是 这是因为你不能有1.1元素。您可以有1个或0个(或2、3、4…n)元素。同样,你也不能有5.5个元素;你可以有5个或6个,但不能介于两者之间。如果您希望在1个元素之后增加阈值,只需将阈值设为1。我不知道为什么会忘记这一点,但感谢izaak_pyzaak提醒我 如果您使用的是线性探测,我将假设您没有链接哈希表 正如Arunmu指出的,如果加载阈值大于1,则未加限制的哈希

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

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


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

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

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

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

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


加载因子为1表示哈希表在调整大小时已完全填充;在调整大小之前,它会降低对表进行哈希/搜索的速度。如前所述,未加限制的哈希表上的加载因子为1.1将是一个主要问题。

加载因子为
1.1
将意味着条目数>导致溢出的存储桶数。你到底想问什么?负载因子是(n/m),其中n是元素的数量,m是指针表的大小(如果是链表和链表)。因此,1.1的负载系数是可能的。谢谢你教育我。我会保留我的错误答案,因为我肯定有人同样不明白。