第9章查找54974(论文资料).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文档。上传文档
查看更多
第九章 查找 9.1 静态查找表 9.2 动态查找表 9.3 哈希表 查找表 查找表(search table):由同一类型的数据元素(记录)构成的集合,称之为查找表(search table) 对查找表可进行的操作有: 1)查询某个特定的数据元素是否在表中。 2)查询某个特定数据元素的各属性 3)插入一个数据元素 4)删除一个数据元素 只进行1)和2)两种操作的表称为静态查找表。 若在查找过程中进行插入和删除操作的表称为动态查找表 关键字 关键字(Key):数据元素中某个数据项的值,它可以标识(识别)一个数据元素(或记录)。 典型的关键字类型说明可以是: typedef float KeyType; //实型 typedef int KeyType; //整型 typedef char *KeyType; //字符串型 查找表中的数据元素类型定义为: typedef struct { KeyType key; //关键字域 …… //其它域 }ElemType; 9.1 静态查找表 静态查找表可以有很多表示方式,实现查找的方式也很多。 9.1.1 顺序表的查找——顺序查找 9.1.2 有序表的查找——折半查找 9.1.3 静态树表的查找 9.1.4 索引顺序表的查找——分块查找 9.1.1 顺序表的查找 静态查找表的顺序存储结构: typedef struct { ElemType *elem; //存储空间基址,0号单元留空 int length; //表的长度 }SSTable; 顺序查找 顺序查找:从表中最后一个记录开始,逐个对记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若直到第一个记录,其关键字和给定值都不等,表明查找不成功。 int Search_Seq(SSTable ST, KeyType key) { ST.elem[0].key=key; //岗哨 for (i=ST.length; !EQ(ST.elem[i].key, key); --i) ; return i; //返回查找到的位置,或找不到为0 } 查找操作的性能分析 为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度(Average Search Length) 。 对于含有n个记录的表,查找成功时的平均查找长度(ASL)为: 其中: pi 为查找表中查找第i个记录的概率,ci 为找到表中第i个关键字与给定值相等时所需要比较的次数。 顺序查找的平均查找长度为: 假设每个记录的查找概率相等,即pi =1/n 则:ASL=(n+1)/2 9.1.2 有序表的查找 有序表的查找一般用折半查找(二分查找) int Serach_Bin(SSTable ST,KeyType Key) { low=1; high=ST.length; while (low=high) { mid=(low+high)/2; if (EQ(key, ST.elem[mid].key)) return mid; else if (LT(key, ST.elem[mid].key)) high=mid-1; else low=mid+1 ; } return 0; } 折半查找的性能分析 折半查找的过程可以用一个判定树来描述 查找成功时折半查找的平均查找长度为: 9.1.3 静态树表的查找 有序表在等概率的情况下,用判定树描述的查找过程,其性能最优。若表中各记录的查找概率不等,其性能未必是最佳的。而使其查找性能最佳的判定树是其带权内路径长度之和PH值最小的二叉树。 其中:n是二叉树的结点个数; hi为第i个结点在二叉树上的层次数;结点的权wi=cpi , pi为结点的查找概率,c为某个常数。 称PH值最小的二叉树为静态最优查找树。 9.1.4 索引顺序表的查找 对索引顺序表的查找一般采用分块查找来实现。 在此查找中,除表本身以外,还需一个索引表,对每个子表建立一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档