hash算法的原理是什么

hash算法的原理是什么

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素数时效果最好

  • 随机数法:

    •  此法适于:对长度不等的关键字构造哈希函数。

  • 随机乘数法

  • 字符串数值哈希法

  • 旋转法

    • 对于相似度高的数据,倒过来就很均匀了

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对亿速云的支持。