Hash 为什么增加哈希表的大小会减少冲突的数量?

Hash 为什么增加哈希表的大小会减少冲突的数量?,hash,hashtable,hash-collision,Hash,Hashtable,Hash Collision,根据我在网上读到的内容,有两种方法可以减少碰撞次数: 使用更好的散列函数 增加哈希表的大小 我能理解第一个原因,但我似乎无法理解第二个原因 假设我有5个键,它们的散列值都是相同的。假设我们正在使用链接来解决冲突。所有5个键将从等于散列值的索引开始形成一个链。现在,让我们假设我将桌子的大小增加了一倍,并将所有的5个键重新灰化。这5个键仍将散列到同一索引中,并且仍将形成大小为5的更改。增加哈希表的大小是如何减少冲突的?这是因为在计算哈希表时,它还考虑了数组大小。所以,当计算散列时,如果数组大小较大,

根据我在网上读到的内容,有两种方法可以减少碰撞次数:

使用更好的散列函数 增加哈希表的大小 我能理解第一个原因,但我似乎无法理解第二个原因


假设我有5个键,它们的散列值都是相同的。假设我们正在使用链接来解决冲突。所有5个键将从等于散列值的索引开始形成一个链。现在,让我们假设我将桌子的大小增加了一倍,并将所有的5个键重新灰化。这5个键仍将散列到同一索引中,并且仍将形成大小为5的更改。增加哈希表的大小是如何减少冲突的?

这是因为在计算哈希表时,它还考虑了数组大小。所以,当计算散列时,如果数组大小较大,则取较大的模值。如: 假设数组大小为3,传递值为2和5 然后2%3和5%3发生在相同的位置,即1。 现在以数组大小5为例 然后2%5和5%5分别位于不同的位置,即2和0。 因此,随着哈希表大小的增加,冲突的数量减少。 希望这个解释能对你有所帮助。

我明白了

哈希有两部分:哈希函数和压缩函数。 更改哈希表的大小将更改压缩函数,从而导致密钥被分配到不同的存储桶。

请参阅:[来源: