第8章 查找-20060530-5-HB.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文档。上传文档
查看更多
第八章 查找 8.1 静态查找表 8.2 动态查找表 8.3 哈希表 查找表 是由同一类型的数据元素(或记录)构成的集合。集合中数据元素之间存在着完全松散的关系 查找表是被查找的对象,是由一组记录组成的表或文件,而每个记录则由若干个数据项组成,并假设每个记录都有一个能惟一标识该记录的关键字。 查找表的操作: 查询某个“特定的”数据元素是否在查找表中 检索某个“特定的”数据元素的各种属性 在查找表中插入一个数据元素 在查找表中删除一个数据元素 最主要也是使用最频繁的操作是查找(也称检索) 静态查找表:一经建立就保持不变的查找表 动态查找表:内容经常动态变动的查找表 查找的定义: 给定一个值k,在含有n个记录的表中找出关键字等于k的记录。若找到,则查找成功,返回该记录的信息或该记录在表中的位置;否则查找失败,返回相关的指示信息。 检索效率是查找表实现中最重要的考虑因素 查找的效率评价 主要运算是关键字的比较,所以通常把查找过程中对关键字需要执行的平均比较次数(也称为平均查找长度)作为衡量一个查找算法效率优劣的标准。平均查找长度ASL(Average Search Length)定义为: 其中,n是查找表中记录的个数 pi是查找第i个记录的概率,一般地,均认为每个记录的查找概率相等,即pi=1/n(1≤i≤n) ci是找到第i个记录所需进行的比较次数 静态查找表:一经建立就保持不变的查找表 抽象数据类型 ADT StaticSearchTable{ 数据对象D:由同一类型的数据元素构成的集合 数据关系R:数据元素同属一个集合 基本操作P: Create(ST,n); Destroy(ST); Search(ST,key); //查找 Traverse(ST,Visit()); //遍历 } 静态查找表的存储结构 顺序表 typedef struct { ElemType *elem; //数据元素存储空间基址,建表时按实际长 // 度分配,0号单元留空 int length; //表长度 } SSTable; 线性链表 查找方法 顺序查找 折半查找 分块查找 顺序查找 它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败 例如,在关键字序列为{3,9,1,5,8,10,6,7,2,4}的线性表查找关键字为6的元素 顺序查找算法 int Search_Seq (SSTable ST, KeyType key) //在顺序表ST中顺序查找其关键字等于key的数据元素。若找 //到,则函数值为该元素在表中的位置,否则为0 { ST.elem[0].key =key; //“哨兵” for(i=ST.length; ST.elem[i].key!=key; --i ) //从后往前找 return i; //找不到时,i为0 } 顺序查找算法性能分析 从顺序查找过程可以看到(不考虑越界比较in),ci取决于所查记录在表中的位置。如查找表中第1个记录时,仅需比较n次;而查找表中最后一个记录时,需比较1次,即ci=n-i+1。因此, 成功时的顺序查找的平均查找长度为 ASL=np1+(n-1)p2+…+2pn-1+pn, 设每个记录的查找概率相等 pi =1/n 即 顺序查找算法性能分析 若考虑查找不成功的情形 对于顺序查找,查找不成功时和给定值进行比较的关键字个数均为n+1.假设查找成功和不成功的可能性相同,对每个记录的查找概率也相等,则pi=1/(2n), 而顺序查找的平均查找长度为 折半查找 折半查找也称为二分查找要求线性表中的结点必须己按关键字值的递增或递减顺序排列。 基本思路: 首先用要查找的关键字k与中间位置的结点的关键字相比较,这个中间结点把线性表分成了两个子表 若比较结果相等则查找完成;若不相等,再根据k与该中间结点关键字的比较大小确定下一步查找哪个子表 这样递归进行下去,直到找到满足条件的结点或者该

文档评论(0)

海川电子书城 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档