re: hash初步 春秋十二月 2011-11-20 14:00
对于关键字为字符串类型的散列函数,其本质和整数模散列差不多,对7位acsii码的字符串,先把它转到对应的整数,比如"abcd",对应的整数为97*128^3+98*128^2+99*128^1+100(128为基数),考虑到字符串长度,上面的公式计算的结果可能会溢出,因此根据mod函数的性质及霍纳算法,可以改进为:((((((97%M)*128+98)%M)*128+99)%M)*128+100)%M,你的strhash实现是累加求和,131为因子,最终结果再取31位而得散列值,而131、31都是素数,素数有处于减少冲突。