最常用的两个:
1 2 const int MAXN = 1000003; 3 4 常用1 5 1 SDBMHash 6 int SDBMHash(char *str) 7 { 8 int hash = 0; 9 while (*str) hash = (*str++) + (hash << 6) + (hash << 16) - hash; 10 return (hash & 0x7FFFFFFF) % MAXN; 11 } 12 13 14 常用2 15 //以后就用这个当模板洛 16 int BKDRHash(char *str) 17 { 18 int seed = 131; 19 int hash = 0; 20 while (*str) hash = hash * seed + (*str++); 21 return (hash & 0x7FFFFFFF) % MAXN;//&0x7FFFFFFF这是为了防止负数产生 22 }