第7章节 查找技术.ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章节 查找技术

7.4 散列表的查找技术 ⑵ 冲突的处理。如何采取合适的处理冲突方法来解决冲突。 在理想的情况下,对给定的查找集合T和某个理想的散列函数H及相应的散列表L,对T中的每个记录ri,H(ri)就是ri在散列表L中的存储位置。但是在实际应用中,这种情况很少出现。在大多数情况下,往往会出现冲突(也称碰撞):对于两个不同的关键码k1≠k2,有H(k1)=H(k2),即两个不同的记录需要存放在同一个存储位置中,k1和k2相对于H称作同义词。 7.4 散列表的查找技术 概 述 关键码集合 ki ri …… …… H(ki) kj H(kj) 冲突:对于两个不同关键码ki≠kj,有H(ki)=H(kj),即两个不同的记录需要存放在同一个存储位置,ki和kj相对于H称做同义词。 7.4 散列表的查找技术 如果记录按散列函数计算出的地址加入散列表时产生了冲突,就必须另外再找一个存储单元来存放发生冲突的记录,这就产生了如何处理冲突的问题。 7.4.2 散列函数的设计 7.4 散列表的查找技术 设计散列函数一般应遵循以下原则: ⑴ 计算简单。散列函数不应该有很大的计算量,否则会降低查找效率。散列函数的计算时间不应该超过其他查找技术与关键码的比较次数。 ⑵ 函数值即散列地址分布均匀。函数值要尽量均匀散布在地址空间,这样才能保证存储空间的有效利用并减少冲突。 7.3.2 平衡二叉树 7.3 树表的查找技术 二叉排序树的查找效率取决于二叉排序树的形态,构造一棵形态均匀的二叉排序树与结点的插入次序有关,而结点的插入次序往往不是随人的意志而定的。因此,找到一种动态平衡的调整方法,对于任意给定的关键码序列,都能构造一棵形态均匀的、平衡的二叉排序树,是我们必须解决的问题。 7.3 树表的查找技术 平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树: ⑴ 根结点的左子树和右子树的深度最多相差1; ⑵ 根结点的左子树和右子树也都是平衡二叉树。 平衡因子:结点的平衡因子是该结点的左子树的深度与右子树的深度之差。 5 4 8 2 5 4 8 2 1 是平衡树 非平衡树 7.3 散列表的查找技术 在平衡树中,结点的平衡因子可以是1,0,-1。 结点的平衡因子=HL-HR 结点的平衡因子可能是多少? 最小不平衡子树:在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子的绝对值大于1的结点为根的子树。 7.3 树表的查找技术 5 4 2 8 1 4 基本思想:在构造二叉排序树的过程中,每插入一个结点时,首先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡子树,在保持二叉排序树特性的前提下,调整最小不平衡子树中各结点之间的链接关系,进行相应的旋转,使之成为新的平衡子树。 7.3 树表的查找技术 平衡二叉树 例:设序列{20,35,40,15,30,25} ,构造平衡树。 20 35 40 7.3 树表的查找技术 35 20 40 15 30 15 例:设序列{20,35,40,15,30,25} ,构造平衡树。 7.3 树表的查找技术 35 20 40 15 30 25 20 25 15 35 40 30 35 40 30 20 25 15 设结点A为最小不平衡子树的根结点,对该子树进行平衡调整归纳起来有以下四种情况: 1. LL型 2. RR型 3. LR型 4. RL型 7.3 树表的查找技术 平衡二叉树 要使构造的一棵二叉树是平衡二叉树,则每次向二叉树中插入新结点时要保持所有结点的平衡因子满足要求。 在插入新结点后保持不了平衡的情况就需要调整。分为下列三种情况: (1)当插入前某结点的左子树与右子树高度相同,即HL=HR,平衡因子为0,向左或向右插入,平衡因子为1或-1,仍满足要求,不需调整。 7.3 树表的查找技术 7.3 树表的查找技术 (2)当插入前某结点的左子树高度为HL,右子树高度HR=HL±1,平衡因子为-1或1,向高度小的一侧子树插入新结点后将使平衡因子变为0,仍满足要求,不需调整。 (3)当插入前某结点的左子树高度为HL,右子树高度HR=HL±1,平衡因子为-1或1子树插入新结点后将使平衡因子变为-2或2,失去平衡,需要调整。 插入前 插入后,调整前 调整后 7.3 树表的查找技术 平衡二叉树——LL型 A 1 BL h BR h 0 AR h B h 2 BL h BR h 1 AR A B X h+1 BL h AR BR h 0 0 B A X 当某结点的左子树的高度比右子树大1,还要在左子树的左子树上插入新结点的情况。 6

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档