由散列函数计算出的上述关键字序列的散列地址为(4,0,0,6,6,3)
前2个关键字插入时,其相应的地址均为开放地址,故将它们直接插入T[4],T[0],当插入第3个关键字时,其散列地址0已被第2个关键字占用故探查h1=(0+1)%7=1,此地址开放,所以将7放入T[1]中
当插入第5个关键字34时,其散列地址6已被非同义词62先占用,故探查h1=(6+1)%7=0,其散列地址0已被第2个关键字占用,故探查h2=(6+2)%7=1,其散列地址1已被第3个关键字占用,故探查h3=(6+3)%7=2,将其插入到T[2]中
所以哈希表为
0 1 2 3 4 5 6
21 7 34 10 46 62
什么是哈希算法?哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
Hash的特点
易压缩:对于任意大小的输入x,Hash值的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。
易计算:对于任意给定的消息,计算其Hash值比较容易。
单向性:对于给定的Hash值,要找到使得在计算上是不可行的,即求Hash的逆很困难。在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上是不可行的。即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。
抗碰撞性:理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。
有两种抗碰撞性:一种是弱抗碰撞性,即对于给定的消息,要发现另一个消息,满足在计算上是不可行的;另一种是强抗碰撞性,即对于任意一对不同的消息,使得在计算上也是不可行的。
高灵敏性:这是从比特位角度出发的,指的是1比特位的输入变化会造成1/2的比特位发生变化。消息M的任何改变都会导致哈希值H(M)发生改变。即如果输入有微小不同,哈希运算后的输出一定不同。
以上就是关于散列函数怎么计算数据元素的地址全部的内容,包括:散列函数怎么计算数据元素的地址、哈希算法的原理、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!