我已经阅读了很多关于 Hash Tables 以及如何在 C 中实现 on 的内容,我想我几乎已经掌握了所有概念,因此我可以开始编写自己的代码,我只是有几个问题尚未解决正确理解。
作为参考,我一直在阅读: http ://eternallyconfuzzled.com/jsw_home.aspx
1)正如我在上面的网站上所读到的,建议哈希表大小使用 2 或素数的幂。这基本上是一个数组,并且数组具有固定大小,因此我可以快速查找我正在寻找的值。如果我有一个大输入,我不能声明一个小数组,因为它不适合,如果我的输入数据不是那么大,我不能声明一个非常大的数组,因为它浪费了内存。
哈希表的最佳大小是多少?我应该根据什么做出决定?
2)另外,在那个网站上,有几个我还没有读完的散列函数。它还指出,最好使用一个众所周知的算法并自己动手。我可能会这样做,我将从该站点中选择一个并在我的代码上对其进行测试,看看它是否根据我的输入数据最大限度地减少了冲突。
困扰我的是我如何控制哈希范围?哈希不能返回大于哈希表大小的整数,否则我们将遇到严重问题。我该如何处理?