陈兄是高人,也是我在CPP博客上很佩服的人,论技术,我自然还不到你,你确实能力很强,你也是幸运的,不像我,我的经历远比你曲折坎坷,没有亲身体会,你是很难想像一个有志向的残疾人是如何克服困难做技术和工作的,不过在技术方面,你激励了我,让我看到还有不止我一个人是真正做技术并重视基础底层的东西,希望你有一天能为中国的基础软件事业发展作出贡献!
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都是素数,素数有处于减少冲突。