第九章 查找表课件教学.ppt

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

开放定址Hash插入StatusInsertHash(HashTableH,HElemTypee){//查找不成功时插入数据元素e到哈希表中,并返回OK;//若冲突次数过大,则重建哈希表intc=0,p=0;if(SearchHash(H,e.key,p,c)==SUCCESS)returnDUPLICATE; //表中已有与e有相同关键字的元素if(cH.cursize){//冲突次数c未达到上限(阀值c可调)H.elem[p]=e;++H.count;returnSUCCESS;//插入e}else{RecreateHashTable(H);//重建哈希表returnUNSUCCESS;}}//InsertHashStatusSearchHash(LHashTableH,KeyTypekval,LHNodeptrp,intc){ //若查到,p指向该结点; //若查不到,p返回最后一个结点待插入 p=H.elem[Hash(kval)]; while(pp-data.key!=kval){q=p;p=p-next;c++;} //q紧随p if(p)returnSUCCESS; else{p=q;returnUNSUCCESS;}}链地址Hash查找StatusInsertHash(HashTableH,ElemTypee){ c=0; if(SearchHash(H,e.key,p,c)==SUCCESS) returnDUPLICATE; if(chashsize[H.sizeindex]/2){ s=newLHNode; s-data=e;s-next=NULL; p-next=s; H.count++; returnOK; } elserecreateHashTable(H);//重建哈希表}链地址Hash插入if(p)p-next=s;elseH.elem[Hash(kval)]=s;**第九章查找表9.1静态查找表9.2动态查找表9.3哈希表及其查找查找表:由同一类元素或记录构成的集合。对数据元素间的关系未作限定。对查找表的操作有查找某个“特定”的元素是否在表中。查找某个“特点”的元素的各种属性。在查找表中插入一个元素。在查找表中删除一个元素静态查找表、动态查找表关键字数据元素中的某个数据项值。可以表示一个数据元素,如可以唯一表示,则为主关键字(primarykey)。查找根据给定的某个值,在查找表中确定一个关键字等于给定值的数据元素。若找到表示查找成功,返回该元素详细信息或在查找表中的位置;否则返回NULL9.1静态查找表9.1.1顺序查找typdefstruct{ ElemType*elem;//元素存储空间,0单元保留 int length;//表长度}SSTable;查找成功和失败平均查找长度查找过程中先后和给定值进行比较的关键字的个数的期望值ASL=∑PiCi∑Pi=1i=1,2,……nCi=n-i+1Pi=1/nASLss=1/n∑(n-i+1)=(n+1)/29.1.2折半查找折半查找(binarySearch):二分查找。例8.2利用二分查找在顺序有序表中查找。算法8.2IntSearch_Bin(SStableST,KeyTypekval)ASLbs=(n+1)/nlog(n+1)-1二分查找平均查找长度(假设满二叉树)ASLbs=(n+1)/nlog(n+1)-1ASLbs=(20+21*2+…+2h-1*h)Pi=又称索引顺序查找介于顺序查和折半查找之间。适合于关键字分块有序typedefstruct{ KeyType key; int stadr;}indexItem;typedefstruct{ indexItem *elem; int length;}indexTable;算法Search_Idx(SSTableST,indexTableID,KeyTkval)设索引长度b,顺序表长度为n,则:ASLidx=ASL(b)+ASL(n/b)≈log2(b+1)-1+(n/b+1)/29.

文档评论(0)

新起点 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档