hash算法的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
比如100个员工,100个工号,就用工号做hash
不失一般性,我们这里只给出其中8个关键字进行分析,8个关键字如下所示:
此法适于:能预先估计出全体关键字的每一位上各种数字出现的频度。
K1=61317602 K2=61326875 K3=62739628 K4=61343634
K5=62706815 K6=62774638 K7=61381262 K8=61394220
取数据元素关键字中某些取值较均匀的数字位作为哈希地址的方法
例2,要构造一个数据元素个数n=80,哈希长度m=100的哈希表。
关键字位数较多,而且关键字中每一位上数字分布大致均匀的情况。
将关键字分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几部分的叠加和(舍去进位),这方法称为折叠法。
这种方法适用于:
则对不同的关键字得到的哈希函数值不易产生冲突,
由此产生的哈希地址也较为均匀
先取关键字的平方,然后根据可使用空间的大小,选取平方数是中间几位为哈希地址
原理是通过取平方扩大差别,平方值的中间几位和这个数的每一位都相关,
此法适于:关键字中的每一位都有某些数字重复出现频度很高的现象
减去法是数据的键值减去一个特定的数值以求得数据存储的位置。
将十进制数X看作其他进制,
比如十三进制,再按照十三进制数转换成十进制数,提取其中若干为作为X的哈希值。
一般取大于原来基数的数作为转换的基数,并且两个基数应该是互素的。
理论研究表明,除留余数法的模p取不大于表长且最接近表长m素数时效果最好
此法适于:对长度不等的关键字构造哈希函数。
对于相似度高的数据,倒过来就很均匀了
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。