【发布时间】:2011-12-30 04:09:02
【问题描述】:
为小于 5000 的整数生成唯一哈希值的最佳和最简单的哈希函数是什么?
实际问题是我有一个大小约为 50 的整数数组,其中包含 1 到 5000 之间的值。现在我必须进行反向映射,即给定一个值,我必须找出存储它的索引。我知道它可以通过使用二进制搜索来完成,因为我的数组是排序的。
请不要为 C 推荐任何哈希库。
【问题讨论】:
-
为什么不能用数字作为自己的哈希?
-
@Blender:是的,有可能,但在这种情况下,我必须创建一个大小为 5000 的哈希表,这就是我来这里寻找更好方法的原因。如果我没有得到任何东西,我只会去。
-
如果数字范围为
1...5000,那么就有5000可能的哈希值(假设您想要唯一的哈希值,这对搜索很有意义)。无论哪种方式,您都将创建5000哈希,那么为什么不采用简单的解决方案呢? -
@blender:实际上我有一个固定大小为 50 的常量数组,它的值在项目的整个生命周期中不会改变。所以我已经有了一组值,我只想为这些值生成唯一的哈希。如果是一般情况,那么您所说的绝对正确。如果你想要这些值,我也可以提供。