我一直在阅读很多关于哈希表的知识,以及如何在C语言中实现,我想我几乎拥有了所有的概念,所以我可以开始编写自己的代码,我只是有几个问题我还没有正确理解。关于哈希表的几个问题
作为参考,我一直在阅读这样的: http://eternallyconfuzzled.com/jsw_home.aspx
1)正如我已阅读上述网站,二的幂或素数对被推荐用于散列表的大小。这基本上是一个数组,并且数组的大小是固定的,所以我可以快速查找我正在查找的值。我不能声明一个小数组,如果我有一个很大的输入,因为它不适合,我不能声明一个非常大的数组,如果我的输入数据不是那么大,因为它浪费了内存。
什么是散列表的最佳大小?我应该根据什么决定?
2)此外,在该网站上,有一些哈希函数,我还没有阅读它们。它还指出,最好使用一个众所周知的算法并推出我自己的算法。我可以做到这一点,我会从该网站挑选一个并在我的代码上进行测试,并根据我的输入数据查看是否最小化了冲突。
什么在扰乱我是如何控制散列范围?哈希无法返回,并且整数大于哈希表大小,否则我们会遇到严重问题。我如何处理这个问题?
对于第一个问题,我仍然没有帮助,我的意思是,我不能只是将一个随机数作为哈希表大小。我如何选择一个?你是什么意思,“我不知道如何使这个2.”? – 2010-02-20 23:52:19
一个相当不错的答案。 OCaml哈希表类似于您所描述的自动调整大小。重新“我如何控制散列范围”你不知道。这是它的美丽。你只需要使用运行时的哈希表就好像它们是世界上最好的东西,而且它们只是(以一个常数)。 – 2010-02-21 00:00:23