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

第二章线性表 第七章 查找.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  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 (Average Search Length) 为确定记录在表中的位置,需和给定值进行比较的关键字的个数 顺序查找 查找过程:从表的一端开始逐个进行记录的关键字和给定值的比较 顺序查找 顺序查找方法的ASL 折半查找 查找过程:每次将待查记录所在区间缩小一半 适用条件:采用顺序存储结构的有序表 折半查找 折半查找 折半查找 算法评价 有n个结点的判定树的深度为?log2n?+1 折半查找法在查找过程中进行的比较次数最多不超过其判定树的深度 折半查找的ASL 分块查找 查找过程:将表分成几块,块内无序,块间有序;先确定待查记录所在块,再在块内查找 适用条件:分块有序表 分块查找 分块查找 算法评价 查找方法比较 二叉排序树 二叉排序树或是一棵空树,或是具有下列性质的二叉树 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值 它的左、右子树也分别为二叉排序树 构造二叉排序树 插入原则 若二叉排序树为空,则插入结点应为新的根结点; 否则,继续在其左、右子树上查找,直至某个叶子结点的左子树或右子树为空为止; 则插入结点应为该叶子结点的左孩子或右孩子 构造二叉排序树 二叉排序树生成 从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树 二叉排序树 二叉排序树的删除 要删除二叉排序树中的p结点,分三种情况: p为叶子结点 p只有左子树或右子树 p左、右子树均非空 二叉排序树 算法性能 在二叉排序树查找中,成功的查找次数不会超过二叉树的深度,而具有n个结点的二叉排序树的深度,最好为log2n,最坏为n。因此,二叉排序树查找的最好时间复杂度为O(log2n),最坏的时间复杂度为O(n),一般情形下,其时间复杂度大致可看成O(log2n),比顺序查找效率要好,但比二分查找要差 平衡二叉树 若一棵二叉树中每个结点的左、右子树的深度之差的绝对值不超过1,则称这样的二叉树为平衡二叉树 将该结点的左子树深度减去右子树深度的值,称为该结点的平衡因子(balance factor) 也就是说,一棵二叉排序树中,所有结点的平衡因子只能为0、1、-1时,则该二叉排序树就是一棵平衡二叉树,否则就不是一棵平衡二叉树 平衡二叉树 给定若干个数据节点,构造一棵平衡二叉树 插入/删除一个节点 平衡调整 哈希(hash)查找 基本思想 在记录的存储地址和它的关键字之间建立一个确定的对应关系 这样,不经过比较,一次存取就能得到所查元素的查找方法 哈希(hash)查找 哈希函数 在记录的关键字与记录的存储地址之间建立的一种对应关系 哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象 哈希(hash)查找 哈希函数可写成:addr(ai)=H(ki) ai是表中的一个元素 addr(ai)是ai的存储地址 ki是ai的关键字 哈希(hash)查找 哈希表 应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表称为~ 哈希查找 又叫散列查找,利用哈希函数进行查找的过程 哈希(hash)查找 冲突:key1?key2,但H(key1)=H(key2)的现象。 key1 与 kye2称为”同义词“ 哈希函数通常是一种压缩映象,所以冲突不可避免,只能尽量减少;同时,冲突发生后,应该有处理冲突的方法 哈希函数的构造方法 直接定址法 构造:取关键字或关键字的某个线性函数作哈希地址,即H(key)=key 或 (key)=a·key+b 特点 直接定址法所得地址集合与关键字集合大小相等,不会发生冲突 实际中能用这种哈希函数的情况很少 哈希函数的构造方法 数字分析法 平方取中法 折叠法 随机数法 哈希函数的构造方法 除留余数法 构造:取关键字被某个不大于哈希表表长m的数p除后所得余数作哈希地址,即 H(key)=key MOD p,p?m 特点 简单、常用,可与上述几种方法结合使用 p的选取很重要;p选的不好,容易产生冲突,选p为小于或等于哈希表表长m的某个最大质数为好 哈希函数的构造方法 选取哈希函数,应考虑以下因素 计算哈希函数所需时间 关键字长度 哈希表长度(哈希地址范围) 关键字分布情况 记录的查找频率 处理冲突的方法 开放定址法 当冲突发生时,形成一个探查序列;沿此序列逐个地址探查,直到找到一个空位置(开放的地址),将发生冲突的记录放到该地址中,即 Hi=(H(key)+

文档评论(0)

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

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

1亿VIP精品文档

相关文档