看了Wiki里面的一个hash代码,试了一下发现很容易发生碰撞例如"daming" 和 "kuking"这两个的Hash值就是一样的这个是怎么回事情?
unsigned long hash(const char *name,size_t len){ unsigned long h=(unsigned long)len; size_t step = (len>>5)+1; for (size_t i=len; i>=step; i-=step) h = h ^ ((h<<5)+(h>>2)+(unsigned long)name[i-1]); return h;}
我觉得单个冲突的案例说明不了什么太多问题,尤其这个 hash 函数的目标是计算速度。有更详尽的测试吗?"比如一个比较大规模的字典里冲突的概 『More』 - 回复 | (1047) | 云风 | 2006-04-07 02:10:18