数据结构第七章 查找.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(2) 平方探查法 平方探查法的探查序列为d,d+12,d+22 ,…,或表示为(d+i2) % m (0≤i≤m-1) 平方探查法是一种较好的处理冲突的方法,它能够减少堆积现象的发生。它的缺点是不能探查到散列表上的所有单元,但至少能探查到一半单元。不过在实际应用中,能探查到一半单元也就足够了,若探查到一半单元仍找不到一个空闲单元,表明此散列表太满应该重新建立。 7.5 散列表及其查找 这种方法使用两个散列函数H1和H2,其中H1和前面的H(K)一样,是以关键字为自变量产生一个0至m-1之间的数作为散列地址,H2也是以关键字为自变量,产生一个1至m-1之间并和m互素的数(即m 不能被该数整除)作为探查序列的地址增量(即步长),双散列函数的探查序列为 d0=H1(K)di=(di-1+H2(K))% m(1≤i≤m-1) (3) 双散列函数探查法 7.5 散列表及其查找 2. 链接法 链接法(又叫链地址法)就是把发生冲突的同义词元素用单链表链接起来的方法。它需要在散列表的每个单元中增加一个指针域,用来存储由发生冲突的同义词元素所构成的单链表的表头结点指针。 单链表中的结点可以是静态结点也可以是动态结点,相应的链接法被称为静态链接法和动态链接法。 7.5 散列表及其查找 数据结构(第四版) 数据结构(第四版) 第7章 查 找 第7章 查 找 学习目的要求: 顺序表、有序表、索引顺序表的定义、查找及算法。 散列表的定义及构造法。 散列表冲突的处理方法。 7.1 基本概念 7.2 顺序查找 7.5 散列表及其查找 7.4 分块查找 7.3 二分法查找 第7章 查 找 7.1 基本概念 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。 关键字(Key)是数据元素(或记录)中某个数据项的值,用它可以标识(识别)一个数据元素(或记录)。若此关键字可以惟一地标识一个记录,则称此关键字为主关键字(Primary Key)。 查找是根据给定的某个关键字的值,在查找表中确定一个其关键字值等于给定值的数据元素(或记录)。 7.2 顺序查找 顺序查找(Sequential Search)也称为线性查找,它的基本思想是用给定的值与表中各个记录的关键字值逐个进行比较,若找到相等的则查找成功,否则查找不成功,给出找不到的提示信息。 这种查找方法对顺序存储和链式存储都是适用的。 顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字值和给定值的比较,若某个数据元素的关键字值和给定值相等,则查找成功,找到所查记录;反之,若一直找到第一个,其关键字值和给定值都不相等,则表明数组中没有所查元素,查找不成功。 int seqsrch(sqlist r,int k,int n) { int i; r[0].key=k ; i=n; whi le (r[i].key!=k) /*第i个元素是k吗*/ i--; return(i); } 这个程序使用了一点小技巧,开始时将给定的关键字值 k放入r[0].key中,然后从n开始倒着查,当某个r[i].key=k时,表示查找成功,自然退出循环。若一直查不到,则直到i=0。由于r[0].key必然等于k,所以此时也能退出循环。由于r[0]起到“监视哨”的作用,所以在循环中不必控制下标i是否越界,这就使得运算量大约减少一半。 7.2 顺序查找 为了表示平均查找次数,定义平均查找长度为: ASL= ∑PiCi 其中,Pi为查找第i个记录的查找概率; Ci为查找第i个记录时的比较次数; n为表中记录个数。 在这里Ci=n-i+1,假设每个记录的查找概率都相等,即Pi=1/n(i=1,2,3,…,n)此时 ASL= -∑(n-i+1) = (n+1)/2 n i = 1 n i = 1 n 1 7.2 顺序查找 顺序查找的优点是:算法简单且适用面广,它对表的结构无任何要求。无论记录是否按关键字的大小有序,其算法均可应用,而且上述讨论对线性链表也同样适用。 这就是说,成功查找的平均查找长度为(n+1)/2。显然不成功查找次数为n+1,其时间复杂度均为O(n)。 7.2 顺序查找 7.3 二分法查找 在顺序存储的条件下,若各记录是按其关键字值的大小依次存放的,则这个查找表称为有序表。 在有序表中可采用二分法查找(或称为折半查找)的方法进行查找。 二分法查找的基本思想是:先取表的中间记录的关键字值与给定关键字的值相比较,如果给定值比该记录的关键字值大,则要查找的记录一定在表的后半部分;若给定值比该记录的关键字值小,则要查找的记录一定在表的前半部分。

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档