欲参加2017年下半年软考程序员考试的同学,现在可以着手复习了。下面是希赛小编为大家整理的部分软考程序员课程中的知识点,下文主讲构造散列函数的方法。供各位学习。
构造散列函数的方法
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。
直接定址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key)=a•key+b,其中a和b为常数(这种散列函数叫做自身函数)
数字分析法:一般取一些大一点的素数,效果更好点。
平方取中法:计算关键值再取中间r位形成一个2^r位的表
折叠法:把所有字符的ASCII码加起来(对于字符串)
随机数法:选择一个随机函数,取关键字的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。通常关键字长度不等时采用此法构造哈希函数较恰当。
除留余数法:取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即H(key)=key MOD p,p<=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对p的选择很重要,一般取素数或m,若p选的不好,容易产生同义词。
针对字符串的一些常用方法,比如ELFHash和BKDRHash(更易于编写,效率不错)