如何提高具有100万个元素和997个桶的哈希表的性能?

use*_*288 5 c++ hash hashtable hashmap data-structures

这是一个面试问题.

假设表中有100万个元素和997个无序列表桶.进一步假设散列函数以相等的概率分配密钥(即,每个桶具有1000个元素).

查找表中没有的元素的最坏情况是什么时候?要找到表中的一个?你怎么能改善这个?

我的解决方案:查找不在表和表中的元素的最坏情况时间都是O(1000).1000是未排序列表的长度.

改进它:(0)直截了当,增加桶数> 100万.(1)每个桶包含第二个哈希表,它使用不同的哈希函数来计算第二个表的哈希值.它将是O(1)(2)每个桶包含一个二叉搜索树.它将是O(lg n).

是否有可能在空间和时间之间进行权衡.将它们保持在合理的范围内.

有更好的想法吗?谢谢 !

Jer*_*fin 7

最简单和最明显的改进是将哈希表中的桶数增加到120万 - 至少假设您的哈希函数可以生成该范围内的数字(通常会这样).