我正在寻找一种特殊的哈希函数。假设我有一个很大的字符串列表,如果我按它们的哈希值排序它们应该是随机排序的。
最重要的一点是:它必须超级快。我已经尝试过md5和sha1,他们正在使用很多CPU功能。
冲突不是问题。
我正在使用javascript,所以它实现起来不应该太复杂。
答案 0 :(得分:8)
看看Murmur哈希。它有一个很好的空间/碰撞权衡:
答案 1 :(得分:5)
看起来好像你想要哈希表中使用的散列函数,而不是用于检测重复或篡改的排序。
谷歌搜索将为您提供有关替代哈希函数的丰富信息。首先,远离加密签名哈希(如MD-5或SHA-1),它们解决了另一个问题。
答案 2 :(得分:3)
如果速度至关重要,您可以实现一个简单的ad-hoc哈希,例如取第一个和最后一个字母,然后按照最后一个字母顺序排列字符串。正如你所说,结果看起来像是“准随机”而且会很快。例如,我的答案的一部分就是这样排序:
ca ad-hoc
el like
es simple
gt taking
hh hash
nc can
ti implement
uy you
答案 3 :(得分:3)