第七章查找技术.docVIP

  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文档。上传文档
查看更多
第七章查找技术

第七章 查找技术 一、基本术语 1.记录/关键码:查找问题中的数据元素称为记录;标识一个记录的某个数据项称为关键码;能唯一标识一个记录的关键码称为主关键码 2.查找:在具有同类型记录的集合中找出给定条件的记录 3.静态查找:不涉及插入和删除操作的查找 4.动态查找:设计插入和删除操作的查找 5.查找结构:专门为查找操作设计的数据结构 ??(1)线性表:适用静态查找,主要采用顺序查找技术、折半查找技术 ??(2)树表:适用动态查找,主要采用二叉排序树查找技术 ??(3)散列表:适用静态查找和动态查找,主要采用散列技术 6.查找算法的时间性能:用平均查找长度来度量(关键码比较次数的期望) ??(1)对于查找成功:平均查找长度=查找成功对应的关键码比较次数=所有结点的比较次数之和/结点的个数 ??(2)对于查找失败:平均查找长度=查找失败对应的关键码比较次数=所有外结点的比较次数之和/外结点的个数 二、线性表的查找技术 1.顺序查找:应用于顺序存储和链式存储,平均查找长度为O(n) 2.折半查找:要求表中记录按关键码有序并采用顺序存储,平均查找长度为O(log2n) 3.折半查找判定树 ??(1)判定树:描述折半查找过程的的二叉树,称为折半查找判定树,简称判定树,一个结点对应一个记录,结点的值对应记录在表中的位置 ??(2)判定树的构造方法: ????第一步:确定结点值的区间:若有序表长度为n,则结点值的区间为[1,n] ????第二步:确定根结点的值:mid=(1+n)/2; ????第三步:确定左子树的区间:[1,mid-1],和右子树的区间:[mid+1,n]; ????第四步:确定左、右子树根结点的值:左mid=(1+mid-1)/2;右mid=(mid+1+n)/2;返回第三步 ??(3)判定树的性质: ?????①判定树是二叉排序树,且结点个数相同的判定树一样 ?????②任意两个叶子所处层数最多差1,n个结点的判定树的深度为[long2n]+1 ??(4)判定树的平均查找长度 ????结点的比较次数=该结点所在层数 ????外结点:在每个结点的空指针域加上一个实际不存在的结点,长度为n的有序表有n+1个外结点? ? ?? 外结点的比较次数=外结点的根结点所在层数 ?? ?①查找成功时的平均查找长度=所有结点的比较次数之和/有序表的长度 ??? ②查找失败时的平均查找长度=所有外结点的比较次数之和/外结点的个数 4.示例:画出长度为10的折半查找判定树,并求等概率时查找成功和不成功的平均查找长度 树表的查找技术 1.二叉排序树:左子树结点值比根结点小,右子树结点值比根结点大 2.二叉排序树的构造方法: ??第一步:从空树构造一棵二叉排序树,将第一个关键码作为二叉排序树的根结点 ??第二步:依次插入结点,满足左比根小、右比根大的规则 3.二叉排序树中删除结点的方法: ??第一步:找到一个大于待删除结点的最小值或小于待删除结点的最大值的结点s ??第二步:用结点s替换待删除结点 ??第三步:删除结点s 4.平衡二叉树 ??(1)平衡二叉树:二叉排序树中所有结点的左右子树深度最多相差1 ???结点的平衡因子:该结点的左子树深度-右子树深度 ? ? 最小不平衡子树:以距离插入结点最近且平衡因子绝对值大于1的结点为跟的子树 ??(2)构造平衡二叉树的方法 ????第一步:插入一个结点,计算此时所有结点的平衡因子, ????????若不存在绝对值大于1,则没有失去平衡,返回第一步; ????????若发现某结点的平衡因子绝对值大于1,进入第二步; ????第二步:找出最小不平衡子树的根结点A,判断新插结点与根结点A是下面哪种类型 的调整,并做相应调整 ????? LL型:新插结点在A的左孩子的左子树上----顺时针旋转最小不平衡子树,调整 最小不平衡子树的支撑点 ?? ???RR型:新插结点在A的右孩子的右子树上----逆时针旋转最小不平衡子树,调整 最小不平衡子树的支撑点 ????? LR型:新插结点在A的左孩子的右子树上----先逆时针旋转左孩子,调整左孩子 的支撑点;再顺时针旋转最小不平衡子树,调整最小不平衡子树的支撑点 ????? RL型:新插结点在A的右孩子的左子树上----先顺时针旋转右孩子,调整右孩子 的支撑点;再逆时针旋转最小不平衡子树,调整最小不平衡子树的支撑点 ??? 第三步:计算此时所有结点的平衡因子, ???????若不存在绝对值大于1,则调整成功,返回第一步; ???????若发现某结点的平衡因子绝对值大于1,返回第二步,继续调整; ? 散列表的查找技术 1.散列技术:在记录的存储位置和关键码之间建立一

文档评论(0)

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

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

1亿VIP精品文档

相关文档