第11章查找(免费阅读).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文档。上传文档
查看更多
11.7.2 设计哈希表 设计一个电话号码查询系统。哈希表实现电话号码查询系统是利用哈希表实现电话系统的快速查询,程序实现哈希表建表和查表,并实现对没有查找到的内容进行记录。 1.设计目的 2.需求分析 3.概要设计 4.详细设计 11.8 本章小结 通过本章学习,应该掌握如下要点: (1)顺序表和有序表的查找方法及其平均查找长度的计算方法; (2)静态查找树的构造方法和查找算法,理解静态查找树和折半查找的关系; (3)二叉排序树的构造和查找方法; (4)哈希表的构造方法,深刻理解哈希表与其它结构的表的实质性的差别; (5)按定义计算各种查找方法在等概率情况下查找成功时的平均查找长度。 第11章 查找 查找(Searching)又称检索,就是从一个数据元素集合中找出某个特定的数据元素。它是数据处理中经常使用的一种重要操作,尤其是当所涉及的数据量较大时,查找算法的优劣对整个软件系统的效率影响是很大的。 11.1 查找表 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。由于表中数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。对查找表进行的操作有以下4种: (1)查询某个特定的数据元素是否在查找表中; (2)检索某个特定的数据元素的各种属性; (3)在查找表中插入一个数据元素; (4)从查找表中删除某个数据元素。 11.2 静态查找表 静态查找表是数据元素的线性表,可以是基于数组的顺序存储或以线性链表存储。在C语言中可描述如下: typedef struct { ElemType elem[]; int length; }SSTBL; typedef struct NODE { ElemType elem; struct NODE *next; }NodeType; 11.2.1 顺序查找 顺序查找又称线性查找,是最基本的查找方法之一。其查找过程为:从表的一端开始,向另一端逐个按给定值kx与数据元素的关键字key进行比较。若找到,查找成功,并返回数据元素在表中的位置;若整个表查找完,仍未找到与kx相同的关键字,则查找失败,给出失败信息。 以顺序存储为例,0号单元留空,数据元素从下标为1的数组单元开始存放。 11.2.2 有序表的折半查找 有序表即是表中数据元素按关键字升序或降序排列。折半查找的思想为:在有序表中,取中间元素作为比较对象,若给定值与中间元素的关键字相等,则查找成功;若给定值小于中间元素的关键字,则在中间元素的左半区继续查找;若给定值大于中间元素的关键字,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区间无数据元素,查找失败。 1.算法分析 2.算法实现 3.性能分析 11.2.3 分块查找 分块查找又称索引顺序查找,是对顺序查找的一种改进。分块查找要求将查找表分成若干个子表,并对子表建立索引表,每一个子表由索引表中的索引项确定。索引项包括两个字段:关键字字段(存放对应子表中的最大关键字值);指针字段(存放指向对应子表的指针),并且要求索引项按关键字字段有序。查找过程:将表分成几块,块内无序,块间有序;先确定待查记录所在块,再在块内查找。 查找时,先用给定值kx在索引表中检测索引项,以确定所要进行的查找在查找表中的查找分块(由于索引项按关键字字段有序,可用顺序查找或折半查找),然后,再对该分块进行顺序查找。 11.3 动态查找表——二叉排序树 动态查找表的特点是表结构本身在查找过程中动态生成,即对给定的关键字key,若表中存在其关键字等于key的记录,则查找成功返回,否则插入关键字等于key的记录。 二叉排序树(Binary Sort Tree)可以是一棵空二叉树;当它非空时,是满足下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于根结点的值;若右子树不空,则右子树上所有结点的值均大于根结点的值。 (2)左右子树也都是二叉排序树。 11.3.1 二叉排序树查找过程: 从其定义可见,二叉排序树的查找过程如下。 (1)若查找树为空,查找失败。 (2)查找树非空,将给定值kx与查找树的根结点关键字比较。 (3)若相等,查找成功,结束查找过程。 11.3.2 二叉排序树插入操作 设待插入结点的关键字为kx,为将其插入,先要在二叉排序树中进行查找。若查找成功,按二叉排序树定义,不用插入;查找不成功时,则插入之。因此,新插入结点一定是作为叶子结点添加上去的。构造一棵二叉排序树则是逐个插入结点的过程。 11.3.3 二叉排序树删除操作 和插入相反

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档