- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“数据结构”演示课件[C语言]第09章节
《数据结构》;第九章 查 找;查找表 由同一类型的数据元素(或记录)构成 的集合; 查找操作主要是关键字的比较,故通常把查找过程中对关键字需要执行的平均比较次数(亦称平均查找长度)作为衡量一个查找算法效率优劣的标准。;约定和宏定义;1、静 态 查 找 表; 顺序(线性)表的查找——顺序查找;顺序表的查找算法描述;算法性能分析; 如果考虑到不成功的查找,则查找算法的平均查找长度应是查找成功时的平均长度与查找不成功时的平均查找长度之和。若假设查找成功与不成功的可能性相同,对每个记录的查找概率也相等,即 。由于查找不成
功的比较次数总是n+1,故顺序查找的平均查找长度为
; (2) 当表中各个记录的查找概率互不相等时,为了提高查找效率,宜将诸记录先按查找概率由小到大进行排列(式(9-2)在P1≤P2≤···≤Pn-1≤Pn时达到极小值);;有序表的查找——折半查找;有序表的折半算法描述;算法性能分析; 结论:折半查找法在查找成功时进行比较的关键字个数最多不超过树的深度,即
问题:查找不成功的情况如何?; 折半查找的平均查找长度的计算:
记 h=log2(n+1) ,即有 n=2h-1,则描述折半查找的判定树是深度为h的满二叉树。设表中每个记录的查找概率均相等(Pi=1/n),则查找成功时折半查找的平均查找长度; 说明:
折半查找的效率比顺序查找高。;索引顺序表的查找——分块查找;示例3 分块有序表的索引存储表示;分块查找的算法分析
分块查找实际上是两次查找过程,故整个算法的平均查找长度是两次查找的平均查找长度之和,即
ASLbs=Lb+Lw,
其中
Lb:查找索引表所在子表的平均查找长度
Lw:在子表中顺序查找记录的平均查找长度
设将表均匀分布成b个子表,每个子表包含s个记录(最后一个子表可能不足s个记录),并设表中每个记录的查找概率均相等,即每个子表的查找概率为1/b,子表中每个记录的查找概率为1/s。; (2) 若用折半查找法确定所在块,则; 说明:
(1) 分块查找的优点是,在表中插入或删除一个记录时,只要找到该记录应当所属的块,然后在块内进行插入和删除运算。因为块内记录的存放是任意的,所以插入或删除比较容易,不需要移动大量记录。分块查找的主要代价是增加一个辅助数组的存储空间和将初始表分块排序的操作;;动 态 查 找 表; 动态查找表既具有顺序表那样较高的检索效率,又具有链表那样插入、删除的灵活性。它可有不同的表示方法,但较典型的是采用特殊的树或二叉树作为动态查找表的一种组织方式,可统称为树表。;Specification ADT Dynamic_Search_Table
Elements:表中各结点都含有一个类型相同的关健字,并且
该关健字可唯一地识别结点
Structure:n个结点具有查同属性,同属一个集合;二叉排序树及其查找过程;示例1 如下是两棵二叉排序树;二叉排序树的查找算法描述;二叉排序树的插入和生成;二叉排序树查找算法的修正算法;二叉排序树的插入算法; 从二叉排序树的生成过程可以看到,它经历了若干次插入新结点的操作。每次插入的新结点都是二叉排序树上新的叶子结点,则在进行插入操作时,不必移动其它结点,仅需改动某个结点的指针,由空变为非空即可。它表明,二叉排序树既有类似于折半查找的特性,又采用了链表作存储结构,因此是动态查找表的一种适宜表示。;二叉排序树的删除;(3) p结点既有左子树又有右子树,即p结点的左、右子树均不空。 此时不能作简单处理,而需对p结点的左、右子树进行细化,目的是将p的左、右子树链接到合适的位置,并保持二叉排序树的特性。;设删除结点 p之前二叉排序树的形状如下(细化PL); 做法一 令 p 的左子树为 f 的左子树,而 p 的右子树为 s 的右子树; 做法二 令 p 的直接前驱(或者接后继)替代 p,然后再从二叉排序树中删去它的直接前驱(或直接后继);二叉排序树的查找分析;二叉排序树的平均查找长度;平衡二叉树; 示例4 平衡二叉树、不平衡二叉树以及树中诸结点的平衡因子示例如下;如何使构成的二叉树成为平衡树; (2) RR型平衡旋转
原因:在A的右子树的右子树上插
原创力文档


文档评论(0)