什么哈希函数应该散列有序的数字列表?

时间:2011-07-28 11:32:55

标签: function hash numbers sequence hashcode

考虑一个类型,它是int值的int键映射。键的排序小于,并且映射可以被视为平面列表{key1,val1,key2,val2等}}

我生成这些地图的列表,并希望能够在不到O(n ^ 2)的时间内识别相同的地图。我打算对每个地图进行一次哈希来实现这一点。

我不确定哪种哈希函数最适合此目的。我的密钥可以是非常大的数字(但仍然是int32),并且值往往很小,但我认为这些考虑是无关紧要的,希望我可以使用的散列函数适用于一般数字序列。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

大多数哈希函数,特别是加密哈希函数,都可以处理二进制数据,因此可以处理任何可以表示为字节序列的内容。您只需确定将用于值键的编码。

对于哈希函数,由于您的问题与安全性无关,您可以选择任何您想要的函数。加密散列函数提供了极好的“混合”,有些非常快(与众所周知的非加密散列函数竞争,如CRC32)。例如MD4。但是很可能你的编程语言(你没有说你使用哪种语言)已经提供了MD5实现,这仍然非常快。