哈哈希游戏-万达哈希希函数(一)-直接定址法、除留余数法、平方取中法
栏目:哈希游戏室内知识 发布时间:2024-11-15 21:06:02

  

哈哈希游戏-万达哈希希函数(一)-直接定址法、除留余数法、平方取中法

  直接定址法、除留余数法、平方取中法、基数转换法、数字分析法、折叠法、随机数法、乘积法、点积法等

  直接定址法:取关键字或者关键字的某个线性函数值为哈希地址。即:Hash(key)=key或者Hash(key)=a∗key+b,其中 a 和 b 为常数。

  这种方法计算最简单,且不会产生冲突。适合于关键字分布基本连续的情况,如果关键字分布不连续,空位较多,则会造成存储空间的浪费。

  举一个例子,假设有一个记录了从 1 岁到 100 岁的人口数字统计表。其中年龄为关键字,哈希函数取关键字自身,如下表所示。

  除留余数法:假设哈希表的表长为 m,取一个不大于 m 但接近或等于 m 的质数 p,利用取模运算,将关键字转换为哈希地址。即:Hash(key)=key,其中 p 为不大于 m 的质数。

  这也是一种简单且常用的哈希函数方法。其关键点在于p的选择。根据经验而言,一般p取素数或者m,这样可以尽可能的减少冲突。

  平方取中法:先通过求关键字平方值的方式扩大相近数之间的差别,然后根据表长度取关键字平方值的中间几位数为哈希地址。

  比如:Hasℎ(key)=(key∗key)//100%1000,先计算平方,去除末尾的2位数,再取中间 3 位数作为哈希地址。 这种方法因为关键字平方值的中间几位数和原关键字的每一位数都相关,所以产生的哈希地址也比较均匀,有利于减少冲突的发生。哈希游戏

  为确保最佳浏览效果,建议您使用以下浏览器版本:IE浏览器9.0版本及以上; Google Chrome浏览器 63版本及以上。