C 中的布谷鸟哈希

标签 c hashtable

有谁实现了Cuckoo hashing吗?在C?如果有一个开源的非 GPL 版本,那就太完美了!

既然 Adam 在他的评论中提到了它,有人知道为什么它没有被广泛使用吗?仅仅是实现的问题还是良好的理论性质在实践中没有实现?

最佳答案

正如其他答案所指出的那样,最简单的布谷鸟哈希表确实要求该表是半空的。然而,这个概念已经推广到 d 元布谷鸟哈希,其中每个键都有 d 个可能的嵌套位置,而不是简单版本中的 2 个位置。

随着 d 的增加,可接受的负载系数会迅速增加。对于仅 d=3,您已经可以使用大约 75% 的完整表。缺点是您需要 d 个独立的哈希函数。为此,我非常喜欢 Bob Jenkins 的哈希函数(请参阅 http://burtleburtle.net/bob/c/lookup3.c ),您可能会发现它在布谷鸟哈希实现中很有用。

关于C 中的布谷鸟哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231438/

相关文章:

c - C中的循环出错了

c - 文件系统统计

c - C 中关联集合的简单空间高效实现?

c - 如何改进 C 程序中的拼写检查时间?

objective-c - 哈希表中的 ARC 弱引用

java - 无限循环遍历哈希表

c - 解析文件中的字符串并创建二叉树的程序中出现段错误

c++ - 如何实现内存堆

c - 在单调递增然后递减的序列cera中找到一个数字

c - 为什么位移运算符使我的哈希函数如此快?