- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2)随机探测 设有一组关键字为: (13,29,01,23,44,55,20,84,27,68,11,10,79,14) n=14,选取a=0.75, 则哈希表长m=19,哈希表为T[0..18],用除留余数法构造哈希函数,选p=19,用随机探测法解决冲突。其中随机数序列为:23,2,19,14,3,16,55,44,… 计算机软件技术基础 查找与排序 三、散列查找 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 K=13 H(K)=13%19=13 填入 关键字:(13,29,01,23,44,55,20,84,27,68,11,10,79,14) 13 K=29 H(K)=29%19=10 填入 29 K=01 H(K)=01%19=01 填入 01 K=23 H(K)=23%19=4 填入 23 K=44 H(K)=44%19=6 填入 44 K=55 H(K)=55%19=17 填入 55 K=20 H(K)=20%19=1 冲突 Add=(1+23)%19=5 填入 20 K=84 H(K)=84%19=8 填入 84 K=27 H(K)=27%19=8 冲突 Add=(8+23)%19=12 填入 27 K=68 H(K)=68%19=11 填入 68 K=11 H(K)=11%19=11 冲突 Add=(11+23)%19=15填入 11 K=10 H(K)=10%19=10 冲突 Add=(10+23)%19=14填入 10 K=79 H(K)=79%19=3 填入 79 K=14 H(K)=14%19=14 冲突 Add=(14+23)%19=18填入 14 对此例,平均查找长度为 ASL=(1+1+1+1+1+1+2+1+2+1+2+2+1+2)/14=19/14 明显比采用线性探测法处理冲突为优 计算机软件技术基础 查找与排序 三、散列查找 查找算法如下: int randomProbing(elemtype hash[],int rnd[],int n,int k){/*hash:哈希表;rnd:随机数列;n:哈希表的表长;k:关键字*/ i=H(k);/*计算地址*/ j=0;/*随机数列位置*/ add=i; /*随机探测位置*/ while(hash[add].key!=k hash[add].key!=0){ add=(i+rnd[j])%n; j++; } return(j);} 缺点:处理表满不方便。 若hash[add].key=0表示此地址为空。 计算机软件技术基础 查找与排序 查找与排序 计算机软件技术基础 教 师:曾晓东 电 话E_mail: zengxiaodong@263.net 5.1 查找 一、概念和术语 二、顺序表查找 三、散列查找 四、各种查找算法的比较 计算机软件技术基础 查找与排序 5.1 查找 访问与查找都是数据结构中的重要操作,访问数据结构中数据元素的访问算法都是与具体数据结构的特性紧密相关的。 如根据下标访问数组中的数据元素,沿指针指向访问线性链表中的结点、遍历一棵二叉树等。在这一节中,我们将讨论各种查找算法,并对查找算法进行分析。 计算机软件技术基础 查找与排序 一、概念和术语 记录(record):它是由若干个数据项(或称为域)组成的数据元素,它和结点、顶点的意义完全相同。 文件(file):它是由若干记录组成的集合,即含有若干记录的表称为文件。 关键字 1)主关键字:在数据处理中,被查找的元素通常是以记录形式出现的,即每一个数据元素(记录)由若干个数据项组成,其中能用来唯一标识该记录的数据项称为主关键字。 2)次关键字:用来标识若干记录的数据项称为次关键字。 计算机软件技术基础 查找与排序 一、概念和术语 查找 给定一个值K,在含有n个记录的文件中进行查找,寻找一个关键字值等于K的记录,如果找到则输出该记录,否则输出查找不成功的信息。 动态查找与静态查找 查找的同时对表作修改操作的表称为动态查找表,否则称之为静态查找表。 计算机软件技术基础 查找与排序 一、概念和术语 平均查找长度 由于待查记录在文件中的位置随意性很大,因此通常用比较次数的平均值,即统计意义上的数学期望值来评估查找算法,称为平均查找长度(ASL): 其中,n是文件中记录的个数,Pi是查找第i个记录的查找概率,通常我们认为每个记录的查找概率相等,即Pi=1/n;Ci是找到第i个记录时所经历的比较次数。 计算机软件技术基础 查找与排序 二、顺序表查找 1、顺序
文档评论(0)