哈希游戏-万达哈希Hash基本概念及内核介绍
栏目:哈希游戏室内知识 发布时间:2024-11-15 21:05:16

  

哈希游戏-万达哈希Hash基本概念及内核哈希介绍

  Hash 1 .基本概念 哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字 k 和元素的存储位置 p 之间建立一个对应关系 H,使得p=H(k),H 称为哈希函数。创建哈希表时,把关键字为 k 的元素直接存入地址为 H(k)的单元;以后当查找关键字为 k 的元素时,再利用哈希函数计算出该元素的存储位置 p=H(k),从而达到按关键字直接存取元素的目的。 P = H(k) k 2. 常用的构造散列函数的方法 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。散列表的常用构造方法有: (1)直接定址法:取关...

  Hash 1 .基本概念 哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字 k 和元素的存储位置 p 之间建立一个对应关系 H,使得p=H(k),H 称为哈希函数。创建哈希表时,把关键字为 k 的元素直接存入地址为 H(k)的单元;以后当查找关键字为 k 的元素时,再利用哈希函数计算出该元素的存储位置 p=H(k),从而达到按关键字直接存取元素的目的。 P = H(k) k 2. 常用的构造散列函数的方法 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。散列表的常用构造方法有: (1)直接定址法:取关键字或关键字的某个线性函数值为散列地址。即 H(key)=key或 H(key) = a*key + b,其中 a 和 b哈希游戏 为常数(这种散列函数叫做自身函数)。若其中 H(key)中已经有值了,就往下一个找,直到 H(key)中没有值了,就放进去。 (2)数字分析法:分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。 (3)平方取中法:当无法确定关键字中哪几位分布较均匀时,可以先求出关键字的平方值,然后按需要取平方值的中间几位作为哈希地址。这是因为:平方后中间几位和关键字中每一位都相关,故不同关键字会以较高的概率产生不同的哈希地址。 (4)折叠法:将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。数位叠加可以有移位叠加和间界叠加两种方法。移位叠加是将分割后的每一部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割界来回折叠,然后对齐相加 (5)随机数法:选择一随机函数,取关键字的随机值作为散列地址,通常用于关键字长度不同的场合。 (6)除留余数法:取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址。即 H(key) = key MOD p,p=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对 p 的选择很重要,一般取素数或 m,若 p 选的不好,容易产生同义词。 3 .处理冲突的方法 当关键字集合很大时,关键字值不同的元素可能会映象到哈希表的同一地址上,即 k1k2,但 H(k1)=H(k2),这种现象称为 冲突,此时称 k1 和 k2 为 同义词。实际中,冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。以下是集中常见的冲突检测方法: (1)开放寻址法:这种方法也称 再散列法,其基本思想是:当关键字 key 的哈希地址p=H(key)出现冲突时,以 p 为基础,产生另一个哈希地址 p1,如果 p1 仍然冲突,再以 p