改进的线性探测插入方法

时间:2014-12-14 18:39:08

标签: algorithm hash time-complexity

目前,我被要求设计一个 O(n log n)算法,用于将 n 元素插入到带有 n 插槽的哈希表中使用线性探测。

最初,如果哈希函数生成的哈希值最终为单个,则插入 n 元素需要 O(n ^ 2)时间号。

因此,我正在考虑通过使用某种类型的数据结构预测任何元素来防止冲突。

例如:计算每个元素的所有哈希值( O(n)),搜索可能的冲突,更改冲突键的哈希值,然后进行插入。< / p>

我的问题:是否有可能在 O(n log n)时间内找到解决我问题的数据结构?

非常感谢。

1 个答案:

答案 0 :(得分:0)

首先,初始化vEB tree以包含0..n-1,表示哈希表的开放槽。要将一个元素插入哈希表,请调用vEB树的FindNext方法一次或两次(如果有环绕)以确定下一个空闲槽,然后调用Delete将其从vEB树中删除。总运行时间为O(n log log n)。