数据结构复习资料 第九章 查找.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  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文档。上传文档
查看更多
数据结构复习资料 第九章 查找

第九章 查 找 重 点:正确理解衡量一个查找算法优劣的主要标准,即平均查找长度;掌握各种查找算法及它的适应范围。掌握各种查找算法性能的分析。 难 点:折半查找,二叉排序树的构造及其查找算法,哈希查找及相应的查找算法。 学习提要: 1. 练掌握顺序表和有序表的查找方法。 2. 熟练掌握二叉排序树的构造和查找方法。 3 .掌握二叉平衡树的维护平衡方法。 4. 熟练掌握哈希表的构造方法,深刻理解哈希表与其它结构的表的实质性的差别。 5. 掌握描述查找过程的判定树的构造方法,以及按定义计算各种查找方法在等概率情况下查找成功时的平均查找长度。 1.基本概念 查找表(Search Table) 静态查找表 动态查找表 查找(Search) 查找的结果通常有两种可能: 查找成功 查找不成功 关键字(key) 主关键字(Primary key) 说明:今后所讨论的是基于主关键码字的查找。 平均查找长度(ASL——Average Search Length) 衡量查找算法的标准:(1)平均查找长度;(2)算法所需要的存储量和算法的复杂性等。 这里只考虑基于关键码(主关键码)的查找。对不同的存储结构,其查找的方法也不同。 9.1 静态查找表 一.顺序查找(可以用顺序表或线性链表表示静态查找表) 1.顺序查找———是线性表的最简单的查找方法。 方法 优点 缺点 2.查找算法 见书。 注意:“监视哨”技术的引入,这是程序设计技巧上的改进。 3.查找长度的分析 二. 二分法查找(折半查找) ——是一种效率较高的线性表的查找方法,但对查找表有2点要求: (1)线性表中结点必须是按关键码字排好序的; (2)线性表必须顺序存储。 1.二分法查找的方法: 优点 缺点 2.算法 三.索引顺序表的查找(分块查找) 详见,图9.6。 分块查找又称索引顺序查找,这是顺序查找的一种改进方法。 方法 由于索引项组成的索引表按关键字有序,则确定块的查找可以用顺序查找,亦可用折半查找,而块中记录是任意排列的,则在块中只能是顺序查找。 查找分两步完成: (1)首先找到所在块(用顺序或折半查找法均可) (2)在块中的查找(只能用顺序查找方法) 分块查找的平均查找长度 其中,为查找索引表确定所在块的平均查找长度;为在块中查找元素的平均查找长度。 例 对一表长的查找表,若利用索引查找时,平均应分成几块?其平均查找长度最小为多少? 解:, 因此,应均匀分成14块,其。 若用折半查找确定所在块,则分块查找的平均查找长度为 * *分块查找介于顺序查找(效率最低但限制最少)和二分法查找(效率最高但限制最强)之间。 9.2 动态查找法 如何克服二分法查找的插入,删除不方便的缺点,而又能保持其快速检索的优点呢?采用二叉排序树组织查找表中的记录便可达到目的。 一.二叉排序树 1.定义(递归定义) 例 ** 中序遍历二叉排序树上的结点可得到一个从小到大排好序的序列。 2.二叉排序树的查找 方法 3.查找算法 ** 二叉排序树的平均检索长度与二分法检索相同量级为。 二.在二叉排序树上插入、删除结点 1.在二叉排序树上插入结点 例:将以下结点依次插入一棵初始为空的二叉排序树中: ** 中序遍历此二叉排序树可得一有序序列(从小到大) 所以,将关键码组织成一棵二叉排序树的过程实际上起了对此集合中的关键码进行排序的作用。 2.在二叉排序树上删除结点 不同于插入结点,删除结点可以删除而二叉排序树上的任何结点,但不能将以该结点上为根的子树都删除,只能删除掉这一结点,并且还要保持二叉树原来的性质(任是一棵二叉排序树) 删除根结点 例 四.平衡二叉树(AVL树) 1.定义(递归定义) 2.平衡因子 例 * 平衡二叉树上所有结点的平衡因子只可能是-1、0和1。 ** 满二叉树一定是完全二叉树,完全二叉树一定是平衡二叉树,但反之则不然。 9.3 哈希表(Hash Table) 一.什么是哈希表 其基本思想 散列表——用散列法存储的线性表叫散列表。 1.散列法存储的具体过程 2.碰撞(冲突) 同义词 如何解决碰撞?(即用什么方法存储同义词) 一个好的散列函数通常只有减少碰撞发生的次数,无法保证绝对不产生碰撞。发生碰撞,找另一个函数再映象到新的集合,可解决碰撞,但处理效率低。 基本区域 发生碰撞时:① 同义词可存放在基本区域内还没被占用的单元里。 ② 可放到基本区域以外另开辟的区域(称溢出区)中 负载因子(散列法的一个重要参数): 负载因子的大小,对于碰撞的发生频率影响很大。(散列表装得越满,则再要装入新结点时碰上已有结点的可能性越大) 时碰撞是不可避免的,一般取,但太小,浪费空间。一般要取得适当,既不过多地增加碰撞,有较快的检索速度,又不浪费空间。 3.检索(查找) *

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档