re: hash初步 春秋十二月 2011-11-20 14:00
對于關(guān)鍵字為字符串類型的散列函數(shù),其本質(zhì)和整數(shù)模散列差不多,對7位acsii碼的字符串,先把它轉(zhuǎn)到對應(yīng)的整數(shù),比如"abcd",對應(yīng)的整數(shù)為97*128^3+98*128^2+99*128^1+100(128為基數(shù)),考慮到字符串長度,上面的公式計算的結(jié)果可能會溢出,因此根據(jù)mod函數(shù)的性質(zhì)及霍納算法,可以改進(jìn)為:((((((97%M)*128+98)%M)*128+99)%M)*128+100)%M,你的strhash實(shí)現(xiàn)是累加求和,131為因子,最終結(jié)果再取31位而得散列值,而131、31都是素數(shù),素數(shù)有處于減少沖突。