网站大量收购独家精品文档,联系QQ:2885784924

2025年实验五高效哈希表设计与实现解析.doc

2025年实验五高效哈希表设计与实现解析.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

哈希表

一、试验目的

学会哈希函数的构造措施,处理冲突的机制以及哈希表的查找。

二、试验内容

阐明如下概念

1、哈希函数

在一般状况下,需在关键字与记录在表中的存储位置之间建立一种函数关系,以f(key)作為关键字為key的记录在表中的位置,一般称这个函数f(key)為哈希函数。

1)哈希函数是一种映象,既:

将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超过容許范围既可;

2)由于哈希函数是一种压缩映象,因此,在一般状况下,很轻易产生“冲突”現象,既:key11key2,而f(key1)=f(key2)。

2、哈希表

根据设定的哈希函数f(key)和处理冲突的措施将一组关键字映像到一种有限的持续的地址集(区间)上,并以关键字在地址集中的“像”作為记录在表中的存储位置,这种表便称為哈希表,这一映像过程称為哈希造表或散列,所得存储位置称哈希地址或散列地址。

3、冲突及处理

1)冲突:对不一样的关键字也許得到同意哈希地址,既key11key2,而f(key1)=f(key2),这种現象称冲突(collision)。

2)处理措施:开放地址法。

4、哈希表的查找分析

从查找过程得知,哈希表查找的平均查找長度实际上并不等于零。

决定哈希表查找的ASL的原因:

1)选用的哈希函数;

2)选用的处理冲突的措施;

3)哈希表饱和的程度,装载因子α=n/m值的大小(n—记录数,m—表的長度)

一般状况下,可以认為选用的哈希函数是“均匀”的,则在讨论ASL時,可以不考虑它的原因。因此,哈希表的ASL是处理冲突措施和装载因子的函数。

可以证明:

查找成功時有下列成果:

线性探测再散列

随机探测再散列

从以上成果可見

哈希表的平均查找長度是a的函数,而不是n的函数。这阐明,用哈希表构造查找表時,可以选择一种合适的装填因子a,使得平均查找長度限定在某个范围内。

5、哈希函数C語言代码

/*计算哈希地址,插入哈希表*/

intInsertHash(HashTable*H,inte,intd[]){

intk,i=1;

k=e%P;

while(H-data[k].flag==TRUE||k0){

k=(e%P+d[i])%MAXSIZE;i++;

if(i=15)

returnERROR;

}

H-data[k].key=e;

H-data[k].flag=TRUE;

H-count++;

returnOK;

}

/*构造哈希表*/

intCreateHash(HashTable*H,intds[],intlen,intd[]){

inti;

for(i=0;ilen;i++){

if(SearchHash(H,ds[i],d)!=-1)

returnDUPLICATE;

InsertHash(H,ds[i],d);

if(H-count=MAXSIZE)

returnERROR;

}

returnOK;

}

/*初始化哈希表*/

voidInitHash(HashTable*H){

inti;

for(i=0;iMAXSIZE;i++){

H-data[i].key=0;

H-data[i].flag=FALSE;

}

}

/*在哈希表中查找*/

intSearchHash(HashTable*H,inte,intd[]){

intk,i=1;

k=e%P;

while(H-data[k].key!=e){

k=(e%P+d[i])%MAXSIZE;i++;

if(i=15)

return-1;

}

returnk;

}

运行成果:

文档评论(0)

wind2013 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档