返回

看了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;}

名字: 自动排版 密码:

回复 | (1044) | kokk | 2006-04-07 09:44:09