散列函数的构造方法
-
一个好的散列函数一般应考虑下列两个因素:
- 计算简单,以便提高转换速度
- 关键词对应的地址空间分布均匀,以尽量减少冲突 。
-
数字关键词的散列函数构造
- 直接定址法
- 除留余数法(p一般取素数)
- 数字分析法
- 分析数字关键字在各位上的变化情况,取比较随机的位作为散列地址
- 比如:取手机号号码的后4位
- 分析数字关键字在各位上的变化情况,取比较随机的位作为散列地址
- 折叠法
- 平方取中法
-
字符关键词的散列构造
-
ASCII码加和法
-
前3个字符移位法
-
移位法
涉及关键词所有n个字符,并且分布得很好
-
-
如何快速计算:
Index Hash( const char *Key, int TableSize )
{
unsigned int h = 0; //散列函数值,初始化为0
while( *Key != '\0' ) //位移映射
h = (h<<5)+ *Key++;
return h%TableSize
}