2014年C语言程序设计 第八章 查表.pptVIP

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分块查找是顺序查找的一种改进,在表的 基础上又建立一个“索引表”。 顺序表可分为若干子表,为每个子表建立一个索引项。索引表中每个索引项包括两项内容:关键字项(其值为该子表内的最大关键字)和指针项(指示该子表的第一个记录在表中位置) 例如: 3.二叉排序树的插入算法 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 二、二叉平衡树 何谓“二叉平衡树”? 在含 N 个关键字的 B-树上进行一次查找,需访问的结点个数不超过 log?m/2?((N+1)/2)+1 结论: 是B-树的一种变型 四、B+树 二叉平衡树是二叉查找树的另一种形式,其特点为: 树中每个结点的左、右子树深度之差的绝对值不大于1 。 例如: 5 4 8 2 5 4 8 2 1 是平衡树 不是平衡树 结点的平衡因子:该结点的左子树的深度减去 ( -1 0 1 ) 右子树的深度 构造二叉平衡(查找)树的方法是: 在插入过程中,采用平衡旋转技术。 假设由于在二叉排序树上插入结点而 失去平衡的最小子树根结点为A,沿插入 路径取直接下两层的结点为B和C,如果这 三个结点处于一条直线上,则采用单旋转 进行平衡化;如果这三个结点处于一条折线 线上,则采用双旋转进行平衡化。失去平衡 后进行调整的规律可归纳为下列4种情况: 调整方法:以结点B为旋转轴,将结点A向右旋转成为 B的右子树,结点B代替原来A的位置,原来B的右子树 成为A的左子树。 原因:在A 的左子树根结点的左子树上插入结点, A的平衡因子由1增至2,至使以A为根的子树失去平衡。 A B h C h BR h AR 插入结点 (1)单向右旋平衡处理:(LLR) LL R A B h+1 C h BR h AR 调整方法:以结点B为旋转轴,将结点A向左旋转成为 B的左子树,结点B代替原来A的位置,原来B的左子树 成为A的右子树。 原因:在A 的右子树根结点的右子树上插入结点, A的平衡因子由-1增至-2,至使以A为根的子树失去平衡。 A B h C h BL h AL 插入结点 (2)单向左旋平衡处理:(RRL) RR L A B h+1 C h BL h AL 调整方法:先以C为旋转轴,将结点B向左旋转成为 C的左子树,结点C代替原来B的位置,原来C的左子树 成为B的右子树。 原因:在A 的左子树根结点的右子树上插入结点, A的平衡因子由1增至2,至使以A为根的子树失去平衡。 (3)先左后右平衡处理:(LRLR) A B h-1 CL h-1 CR h AR 插入结点 C h BL B A h AR h CL h BL C h-1 CR B A h AR h CL h BL C h-1 CR 再以C为旋转轴,将A向右旋转成为 C的右子树,结点C代替原来A的位置,原来C的右子树 成为B的左子树。 L R 再以C为旋转轴,将A向左旋转成为 C的左子树,结点C代替原来A的位置,原来C的左子树 成为B的右子树。 调整方法:先以C为旋转轴,将结点B向右旋转成为 C的右子树,结点C代替原来B的位置,原来C的右子树 成为B的左子树。 原因:在A 的右子树根结点的左子树上插入结点, A的平衡因子由-1增至-2,至使以A为根的子树失去平衡。 (4)先右后左平衡处理:(RLRL) A B h-1 CR h-1 CL h AL 插入结点 C h BR BR A h AL h CR h B C h-1 CL B A h AL h CR h BR C h-1 CL R L A B C A B C 例如:依次插入的关键字为5, 4, 2, 8, 6, 9 5 4 2 4 2 5 8 6 6 5 8 4 2 向右旋转 一次 先向右旋转 再向左旋转 B C A C B A C B A 4 2 6 5 8 9 6 4 2 8 9 5 向左旋转一次 继续插入关键字 9 C A B 在平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡 树的深度。 平衡树的查找性能分析: 问:含 n 个关键字的二叉平衡树可能达到的最大深度是多少? n = 0 空树 最大深度为 0 n = 1 最大深度为 1 n = 2 最大深度为 2 n = 4 最大深度为 3 n = 7 最大深度为 4 先看几个具体情况: 反过来问,深度为 h 的二叉平衡树中所含结点的最小值 Nh 是多少? h = 0 N0 = 0 h = 1 h = 2 h = 3 一般情况下 N1

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档