网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构讲义 查找.pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  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文档。上传文档
查看更多
数据结构讲义 查找

第九章 查找 基本概念 查找表 由同一类型的数据元素构成的集合 静态查找表 对查找表的查找仅是以查询为目的,不改动查找表中的数据 动态查找表 可以在查找表中插入不存在的记录,或删除某个已存在的记录 关键字 数据元素(或记录)的某个数据项,能用来标识一个数据元素 查找 指定关键字,在表中查找 基本概念(续) 查找成功 查找表中存在满足条件的记录 查找不成功 查找表中不存在满足查找条件的记录。 内查找 整个查找过程都在内存中进行。 外查找 在查找过程中需要访问外存。 平均查找长度ASL——查找方法时效的度量 为确定记录在查找表中的位置,需将关键字和给定值比较次数的期望值。 查找成功时的ASL计算方法: n:记录的个数 pi:查找第i个记录的概率,( 不特别声明时认为等概率 pi =1/n ) ci:找到第i个记录所需的比较次数 静态查找表 顺序表的查找 通常查找表中的各元素(或记录)的关键字的值是无序的。 “哨兵”:数据安排在1~n,给定值放在第0个记录处,从后向前查找,直到找到所查记录为止。记录0像哨兵一样看守着查找表下界,不会越界。 顺序表算法 顺序表算法:采用链表结构 顺序表算法性能分析 性能分析 查找成功时 ASLs(n)= =(1+2+ ... +n)/n=(n+1)/2 查找失败时 ASLf =n+1 有序表的查找 有序表 查找表中的各记录的关键字的值是有序的 顺序查找 不需比较到表尾,只需比较到比给定值大的记录 折半查找(二分查找) 将给定值与中间的记录进行比较 若找到则查找成功; 否则:若比中间记录小,则对前一半子表进行折半查找,反之对后一半子表进行折半查找 折半查找的限制 顺序表 事先排好序 折半查找的性能不是查找算法的性能极限 折半查找算法及性能分析 查找性能分析 折半查找每次只查表的一半,其所有记录的查找路径构成一棵二叉树,称为折半查找树(或判定树),每次查找只走了该树的一条分支,故平均查找长度不超过 log2n + 1 索引顺序表的查找 索引顺序表 带索引表的顺序表 索引部分一定是有序的,这部分可用折半查找等方法 顺序表本身不一定有序,要根据顺序表是否有序而选用相应的查找方法 分块查找(blocking search) 将索引部分和表体部分分开查找的方法。 索引表的平均查找长度为两部分查找之和。 动态查找表 二叉排序树 平衡二叉树 B-树和B+树 二叉排序树 二叉排序树 二叉排序树的插入 二叉排序树插入算法 二叉排序树的查找分析 二叉排序树的删除(1) 二叉排序树的删除(2) 二叉排序树的删除(3a) 二叉排序树的删除(3b) 二叉排序树的删除(3c) 二叉排序树的删除算法(1) 二叉排序树的删除算法(2) 动态查找表-平衡二叉树 动态查找表-平衡二叉树 平衡二叉树 平衡二叉树又称 AVL树(Adelson-Velskii Landis于 1962年发明),它具有如下性质: 或者为空树, 或者根结点的左、右子树也均为平衡二叉树,且左、右子树的树高之差的绝对值不超过1。 平衡因子 结点的左子树高度减去右子树高度的值称为该结点的平衡因子。 平衡二叉树也可以这样定义:平衡二叉树是所有结点的平衡因子的绝对值均小于2的二叉树。结点的平衡因子为 +1、-1、0 动态查找表-平衡二叉树 平衡二叉树的插入 要求:插入之后仍保持平衡二叉树的性质不变 平衡二叉树的插入 平衡二叉树的插入 平衡二叉树的插入 平衡二叉树的插入LL 平衡二叉树的插入LR(a) 平衡二叉树的插入LR(b) 平衡二叉树的插入LR(c) 平衡二叉树的插入-右处理 平衡二叉树的插入举例 例:有一组关键字序列{JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC},以此建立 AVL 树。 平衡二叉树的插入举例(续) 平衡二叉树的查找分析 平衡二叉树的查找分析(续) Fibonacci 数列和2n比较 AVL插入算法:数据结构 AVL插入算法:右旋/左旋 AVL插入算法:简单情况 AVL插入算法:左/右子树插入 AVL插入算法:平衡处理 平衡二叉树的删除算法 红黑树 动态查找表: B 树和 B+ 树 B树 B树 B树的查找算法 B树的插入操作 B树的插入操作 B 树的删除操作 B+树 B+树是B树的变形,广泛应用在数据库系统中 一棵m阶B+树与一棵m阶B树的不同之处在于: 叶子结点包含了关键字的信息及指向记录的指针,且叶子结点以关键字自小至大顺序链接 非叶子节点仅仅作为索引部分使用,不含有关键字对应的指针 B+树已不是一棵真正意义上的树型结构了,其终端结点已连成了线性有序表 查找算法 每次查找都要从树根到树叶 键树 键树 又称数字查找树; 每个结点只包含组成关键字的字符或数字 常用存储

文档评论(0)

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

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

1亿VIP精品文档

相关文档