软考程序员课程精讲之构造散列函数的方法

 欲参加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(更易于编写,效率不错)

 

转载于:https://my.oschina.net/u/3466162/blog/909811

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值