ch10查找.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文档。上传文档
查看更多
ch10查找

数据结构讲义 第10章 查找 教学要求: 1、理解和掌握:查找的基本思想及相关概念;线性表的顺序、折半和分块查找算法;哈希表的定义、哈希函数的构造、冲突处理方法、查找及分析。 2、了解:二叉查找树、二叉平衡树和B-树查找算法。 内容提要 查找的基本概念 静态查找表 动态查找表 哈希表及其查找 基本概念 查找:查找,也称为检索。我们规定查找是按关键字进行的。 关键字:数据元素(或记录)中某个数据项的值,用它可以标识(或识别)一个数据元素。 主关键字:唯一标识一个数据元素的关键字称为主关键字 次关键字:其它关键字称为辅助关键字或从关键字,次关键字通常不能唯一标志不同元素。 查找表:查找操作针对的对象。查找表是由同一类型的数据元素构成的集合。查找表是一种非常灵活的数据结构。在实际中,我们通常强加给查找表的元素之间一些关系,将它表示某种数据结构(如线性表、二叉树等)。查找算法依赖查找表采用的数据结构。 查找表的四种操作: 查询某个特定的数据元素是否在表中; 查询某个特定元素的各个属性; 在查找表中插入一个数据元素; 从查找表中删除一个数据元素。 静态查找表:只有上面的前两种操作 动态查找表:包括上面四种操作 查找结果:查找成功、查找失败 查找效率 最大查找长度(MSL):为确定关键字等于给定值的记录在查找表中的位置,需和给定值进行比较次数的最大值称为查找算法查找成功时的最大查找长度。 平均查找长度(ASL):为确定关键字等于给定值的记录在查找表中的位置,需和给定值进行比较次数的期望值称为查找算法查找成功时的平均查找长度。 静态查找表 静态查找表可以有不同的表示方法,包括顺序表、有序表、索引顺序表等。在不同的表示方法中,实现查找的算法也有所不同。 一、顺序表的查找 顺序查找的基本思想 从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和待找的值K相比较,若相等,则查找成功,返回成功位置;若整个表扫描完毕,仍末找到关键字等于K的元素,则查找失败,返回-1。 顺序查找既适用于顺序表,也适用于链表。 顺序表查找的实现 首先定义查找表中数据元素类型 #define ElemType int struct Node { …; ElemType key; //key为关键字 }; 算法一://在表中查找关键字值k, int SeqSearch (Node r[ ],int n,ElemType k) { int i = 0; while ((in) (r[i].key!=k)) i++; if(in) return i; else retur(-1); } 算法二:带监视哨的顺序查找算法 int SeqSearch1 (node r[ ],int n,ElemType k) { int i = 0; r[n].key = k; //监视哨 while ( r[i].key!=k) i++; if(in) return i; else return -1; } 算法分析: 最大查找长度:n 平均查找长度:(n+1)/2 顺序查找的优点是算法简单,对表结构无任何要求,无论是用向量还是用链表来存放结点,也无论结点之间是否按关键字有序或无序,它都同样适用。顺序查找的缺点是查找效率低,当 n 较大时,不宜采用顺序查找,而必须寻求更好的查找方法。 二、有序表的查找-二分查找法 二分查找法的算法思想 二分查找,也称折半查找,是一种高效率的查找方法。但要求表中元素必须按关键字有序(升序或降序)。不妨假设表中元素为升序排列。 二分查找的基本思想是: 首先将待查值K与有序表r[0]到r[n-1]的中点mid上的关键字r[mid].key进行比较,若相等,则查找成功;否则,若r[mid].keyk , 则在r[0]到r[mid-1]中继续查找,若有r[mid].keyk , 则在r[mid+1]到r[n-1]中继续查找。 每通过一次关键字的比较,查找区间的长度就缩小一半。如此不断进行下去,直到找到关键字为K的元素;若当前的查找区间为空(表示查找失败)。 示例:假设给定有序表中关键字为05、13、19、21、37、56、64、74、80、88、92,下面讨论查找K=21和K=85的情况。 二分查找法算法的实现 int BiSearch (Node r[ ],int n,ElemType k) { i

文档评论(0)

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

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

1亿VIP精品文档

相关文档