hash算法精髓在key的全集較大,而實際結果集遠小于全集,hash將一個大范圍的結果集縮小到一個小的結果集中,hash值相同的key值放在一個數組中去,更便于key值命中,以概率論,時間復雜度為O(1),
簡單的hash算法
加法Hash就是把輸入元素一個一個的加起來構成最后的結果。標準的加法Hash的構造如下:
static int additiveHash(String key, int prime)
{
int hash, i;
for (hash = key.length(), i = 0; i < key.length(); i++)
hash += key.charAt(i);
return (hash % prime);
}
這里的prime是任意的質數,看得出,結果的值域為[0,prime-1]。