什么哈希函数应该哈希一个有序的数字列表



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

我生成这些映射的一个列表,并且希望能够在小于O(n^2)的时间内识别相同的映射。我打算对每个映射散列一次来实现这一点。

我不确定哪种哈希函数最适合这个目的。我的键可以是非常大的数字(但仍然是int32),值往往很小,尽管我认为这些考虑是无关紧要的,希望有一个哈希函数,我可以使用它很好地处理一般的数字序列。

任何想法?谢谢你。

大多数哈希函数,特别是加密哈希函数,都处理二进制数据,所以任何可以表示为字节序列的东西都可以处理。你只需要决定你的键值使用什么编码。

至于哈希函数,由于您的问题与安全性无关,因此您可以选择任何您想要的函数。加密哈希函数提供了非常好的"混合"功能。有些非常快(与著名的非加密散列函数(如CRC32)竞争)。例如MD4。但是很有可能您的编程语言(您没有说您使用哪种语言)已经提供了MD5实现,这仍然相当快。

最新更新