hash算法精髓在key的全集較大橄务,而實(shí)際結(jié)果集遠(yuǎn)小于全集难礼,hash將一個(gè)大范圍的結(jié)果集縮小到一個(gè)小的結(jié)果集中,hash值相同的key值放在一個(gè)數(shù)組中去蔫慧,更便于key值命中挠乳,以概率論,時(shí)間復(fù)雜度為O(1)姑躲,
簡(jiǎn)單的hash算法
加法Hash就是把輸入元素一個(gè)一個(gè)的加起來(lái)構(gòu)成最后的結(jié)果睡扬。標(biāo)準(zhǔn)的加法Hash的構(gòu)造如下:
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是任意的質(zhì)數(shù),看得出黍析,結(jié)果的值域?yàn)閇0,prime-1]卖怜。