数据结构算法与程序设计-Read.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文档。上传文档
查看更多
数据结构算法与程序设计-Read

第二章 算法分析(3) 重要的数据结构 Binary Search 1.二分查找算法分析-判定树 树的定义 树(tree)t 是一个非空的有限元素的集合.其中一个元素为根(root),余下的元素(如果有的话)组成t 的子树(subtree). 层数(Level):指定树根的层数为1,其子节点(如果有)的层数为2,子节点的子节点的层数为3,等等。 节点的度(degree of an element)是指其孩子的个数。 树的度(degree of a tree)是其元素度的最大值。 二叉树 二叉树(binary tree)t 是有限个元素的集合(可以为空).当二叉树非空时,其中有一个称为根的元素.余下的元素(如果有的话)被组成2个二叉树,分别称为t的左子树和右子树. 二叉树的高度(height)或深度(depth)是指该二叉树的层数. 从根节点到每个节点有唯一一条路径,路径上的边数称为该路径的长度. 二叉树的数学性质 性质1 :包含n (n0)个元素的树的边数为n-1. 性质2 :若二叉树的高度为h,h≥0,则该二叉树最少有h个元素,最多有2h-1个元素. 性质3 :包含n个元素的二叉树的高度最大为n,最小为「log2(n+ 1)ù: n≤ 2h-1=2h≥n+1 所以,h≥log(n+1),即: h≥「log2(n+ 1)ù 续 扩充的二叉树:补齐外节点的二叉树.设n为其内节点数,则外节点数为n+1; 1 k 1+┅+2(k-2)n2k 有n个节点的扩充二叉树,当外节点分布在相邻两层时其深度,外路和内路长度达到最小(平衡原理). 设扩充前深度为k,则有: 2k-1≤n2k=k= +1 续 设E为根节点到外节点的路径长度之和;I为根节点到内节点的路径长度之和. 对有n个内节点的扩充二叉树,用归纳法可证明: E=I+2n (练习) 假定扩充二叉树的外节点分布在相邻两层则:E=m(k-1)+(n+1-m)k,其中m为第k层上的外节点数.又因外节点数n+1=m+2(2k-1-m),所以:m=2k-(n+1), E=(k+1)(n+1)-2k 二分查找的平均复杂度 设I为内路长度,E为外路长度,则: 平均失败查找次数U(n)=E/(n+1); 平均成功查找次数S(n)=(I+n)/n 平均失败查找次数U(n)=E/(n+1)=Θ(logn) 平均成功查找次数S(n)=(I+n)/n= Θ(logn) 二分查找判定树 二分查找过程可用二叉树来描述:把当前查找区间的中间位置上的结点作为根,左子表和右子表中的结点分别作为根的左子树和右子树。由此得到的二叉树,称为描述二分查找的判定树(Decision Tree)或比较树(Comparison Tree)。 注意: ???  判定树的形态只与表结点个数n相关,而与输入实例中R[1..n]关键字的取值无关。 二分查找判定树的组成   ①圆结点即树中的内部结点。树中圆结点内的数字表示该结点在有序表中的位置。   ②外部结点:圆结点中的所有空指针均用一个虚拟的方形结点来取代,即外部结点。   ③树中某结点i与其左(右)孩子连接的左(右)分支上的标记、(、、)表示:当待查关键字KR[i].key(KR[i].key)时,应走左(右)分支到达i的左(右)孩子,将该孩子的关键字进一步和K比较。若相等,则查找过程结束返回,否则继续将K与树中更下一层的结点比较。 续 二分查找算法的判定树为有n个内节点的扩充二叉树而且叶节点分布在相邻两层:二分查找算法最坏和平均情形的时间复杂度为 基于关键字比较的有序表查找算法至少要做 次比较 在线等价类 有n个元素从1到n编号,最开始,每一个元素在其自己的类中,然后执行一系列F i n d和C o m b i n e操作。 操作F i n d ( e )返回元素e 所在类的唯一特征,而C o m b i n e ( a , b )用来合并包含a和b的类 在线等价类问题也称作离散集合合并/搜索问题(disjoint set union-find problem)。 Union-Find数据结构 设U={1,2,…,n},Ai是U的某些不交子集; union(Ai,Aj)指对这些子集中的Ai和Aj做并操作Ai∪Aj; find(x),x∈U,指找x所在的子集Ai, 即,x∈Ai; 假定初始有n个单元素的子集Ai={i},1≤i≤n; 我们试图找一种表

文档评论(0)

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

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

1亿VIP精品文档

相关文档