第9章 查找_1.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 查找_1

第9章 查找 9.1 基本概念 讨论: 讨论4:如何评估查找方法的优劣? 9.2 静态查找表 一、顺序查找( Linear search,又称线性查找 ) (2)算法的实现: 讨论1:查找失败怎么办? 二、折半查找(又称二分查找或对分查找) 折半查找举例: 算法描述 讨论1:若关键字不在表中,怎样得知并及时停止查找? 请注意:ASL的含义是“平均每个数据的查找时间”,而前式是n个数据查找时间的总和,所以: 再用查找二叉树/判定树来分析ASL(参见教材P220) 三、分块查找(索引顺序查找) 分块查找过程举例: 查找效率ASL分析: 四、静态树表的查找 9.3 动态查找表 一、二叉排序树的定义 二叉排序树的查找 将线性表构造成二叉排序树的优点: 讨论1:二叉排序树的查找插入算法如何实现? 讨论2:二叉排序树的删除操作如何实现? 难点:*p有两棵子树时,如何进行删除操作? 例:请从下面的二叉排序树中删除结点P。 三、二叉排序树的查找分析 最好情况:与折半查找中的判定树相同(即形态比较均衡) 例:请将下面序列构成一棵平衡二叉排序树: ( 13,24,37,90,53) 1)LL平衡旋转: 3)LR平衡旋转: 对于二叉排序树,删除树上一个结点相当于删除有序序列中的一个记录,要求删除后仍需保持二叉排序树的特性。 如何删除一个结点? 假设:*p表示被删结点的指针; PL和PR 分别表示*P的左、右孩子指针; *f表示*p的双亲结点指针;并假定*p是*f的左孩子;则可能有三种情况: *p为叶子: 删除此结点时,直接修改*f指针域即可; *p只有一棵子树(或左或右):令PL或PR为*f的左孩子即可; *p有两棵子树:情况最复杂 → f p PL PR 分析: 设删除前的中序遍历序列为: …. PL s p PR f …. //显然p的直接前驱是s //s是*p左子树最右下方的结点 希望删除p后,其它元素的相对位置不变。有两种解决方法: 法1:令*p的右子树接为*s的右子树, *p的左子树为 *f的左子树 ; //即 fL=PL ; SR=PR ; (但不均衡,查找效率低) 法2:直接令*s代替*p // *s为*p左子树最右下方的结点 f p PL PR s F C CL S SL QL P PR Q PR F C CL S SL QL P PR Q 法2: F C CL S SL QL P PR Q 法1: S SL F P C PR CL Q QL S SL 中序遍历:CL C ……QL Q SL S P PR F F S C PR CL Q QL SL 中序遍历:CL C ……QL Q SL S PR F F P C PR CL 中序遍历:CL C P PR F F C PR CL 中序遍历:CL C PR F f p s q 1) 二叉排序树上查找某关键字等于结点值的过程,其实就是走了一条从根到该结点的路径。 比较的关键字次数=此结点的层次数; 最多的比较次数=树的深度(或高度),即 ?log2 n?+1 2) 一棵二叉排序树的平均查找长度为: 其中: ni 是每层结点个数; Ci 是结点所在层次数; m 为树深。 最坏情况:插入的n个元素从一开始就有序(单调增或减), ——变成了单支树的形态! 此时树的深度为n ; ASL= (n+1)/2 与线性查找的ASL相同! i=m ASL=(1/n)∑ni. Ci i=1 3)对有 n 个关键字的二叉排序树的平均查找长度: 设每种树态出现概率相同,查找每个关键字也是等概率的。 则ASL求解过程可推导,详见教材P232。 树的深度为:?log 2n ? +1 ; ASL=log 2(n+1) –1 结论:二叉排序树的 思考:如何提高二叉排序树的查找效率? 尽量让二叉树的形状均衡 平衡二叉树 平衡二叉树的特点: 任一结点的平衡因子只能取:-1、0 或 1。 对于一棵有n个结点的AVL树, 其高度保持在O(log2n)数量级 则ASL也保持在O(log2n)量级 (a) 平衡树 (b) 不平衡树 0 0 0 1 1 -1 -1 2 0 0 0 1 -1 如果在一棵AVL树中插入一个新结点,就有可能造成失衡,此时必须重新调整树的结构,使之恢复平衡。我们称调整平衡过程

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档