联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300理学]第二十五讲哈希表查找(参考版)

发布时间:2025-01-26 19:54:12  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300理学]第二十五讲哈希表查找(参考版)

  【正文】 。 ( 2)占用的存储空间多,为减少冲突的发生, 哈希表的长度应大于记录的长度。 以哈希表存储数据时,插入查找速度很快,优先 于前面介绍的任一种方法。为空表的时候查找不 成功。 由哈希函数 H(key)=key%13,可以计算出各个 关键字的哈希地址,若有冲突,按照用线性探 测、二次探测来解决,得到下图的 哈希表。如图 1 总之,哈希表的建表过程中与查找过程所经历 的冲突是一致的,只是在建表时把一个关键字 通过哈希函数和解决冲突安排在一个空挡上, 而查找时,是对一个给定的值的方法,使得 某个位置通过哈希函数和找到解决冲突的方法,使得某个位置上的关键字等于给定的值。 随机探测法 是指选择一个随机函数产生随机序列,并建立和 查找时使用同一随机生成序列。由此依次可得: H( 53) =9 H( 60) =5时,发生冲突,以二次探测法得: H1( 60) =( 5+1) %11=6 H2( 60) =( 51) %11=4 H3( 60) =( 5+22) %11=9 H3( 60) =( 522) %11=1此时解决冲突。 二次探测解决冲突的公式如下: H1=H( key) H2i=(H1+i2)% m H2i+1 =(H1 i2)%m 如上例子中, H( 48) =48%11=4与关键字为 4的元素发生冲突时,由二次探测法可得 H1( 48) =( 4+1) %11=5, 仍然冲突又得 H2( 48) =( 41) %11=3, 此时该单元空闲。 二次探测法 此法可以较好的避免堆积现象,能较好的解决冲 突。 H(82)=82%11=5, 此时与 H(38)发生冲突,将其最后放入地址为 1的单元中。 H(53)=53%11=9 H(60)=60%11=5与 H(38) 发生冲突,由线性探测法依次推测,最后放在 地址为 10 的单元中。 假设哈希表大小为 T[m], 哈希函数为 H ( key) 那么,公式如下: H1=H( key) Hi+1= (Hi+1)%m 其中 i=1, 2….. 例如:假设一组记录关键字为 {4, 17, 29, 38,48, 53, 60, 76, 82},试对这组关键字构造哈希表。下面就这几种方法作一介绍。 我们利用下列公式来求得用来存放该记录的下一个地址单元的地址: Hi=(H(k)+di)%m 其中, H(k)关键字为 k的记录所对应的哈希地 址(即发生冲突的地址); di为增量序列; m为哈希表的长度。 解决冲突的方法有两大类:开放地址法和 链地址法。 在处理冲突的过程中可能得到一个地址序列 Hi i=1,2,3,……,k(H i属于 [0, m1]),即在处理哈希地 址的冲突时,若得到的另一个哈希地址 H1仍然发 生冲突,则在求下一个地址 H2, 若仍然冲突,在 求 H3。 处理冲突的方法 在前面已经讲过,均匀的哈希函数可以 减少冲突,但不能够避免,因而解决冲突的 问题尤为重要。通常,当关键字长 度不等的时采用此法构造哈希函数较恰当。 若选择不好,容易产生同义词,从而产生冲突 。 一般地, m是哈希表的长度,它的取值在~ 。 折叠法适用于关键字位数多,而对应的哈希地 址的位数要求较少的情况。 例如:哈希表长为 1000时,关键字 k=,则 15位数字以每段 3位分成 5 段,每段数字为 230, 203, 700, 904, 121。每一段的长度取决于哈希地址的位 数,然后取这几段的叠加和

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: