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

数据结构09-查找.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 查找 (3)被删元素所在页及其相邻的页中元素的数目均等于m/2-1。假设该元素所在页有右兄弟,则将该元素所在页删除后剩下的元素和右兄弟页的元素连同父页中位于被删元素所在页和右兄弟页中的元素一起合并构成新页,这时,如果父页中的一个元素下移后可能引起下溢(即元素个数<m/2-1,则需采用(1)~(3)的办法再递归地调整。 例如,在图中删除元素70。 B+树 考虑B-树的一种变形,该B-树中所有的信息仅存于B树的叶页上,而非叶页仅含有便于查找的辅助信息,如本子树中结点关键码最小(或最大)值,这样的B-树被称B+树. 例 一棵3阶的B+树。 通常在树上有两个头指针,一个指向根页,另一个指向关键码最小的叶页。因此,可以对树进行两种查找运算。一种是从最小关键码起顺序查找,另一种是从根结点开始进行查找。 通常在树上有两个头指针,一个指向根页,另一个指向关键码最小的叶页。因此,可以对树进行两种查找运算。一种是从最小关键码起顺序查找,另一种是从根结点开始进行查找。 静态和动态查找表查找方法 静态查找表和动态查找表通过比较关键字进行查找: (1)顺序表,对数据元素的存储一般有两种形式: (a) 是按到来次序连续存放,查找时顺序比较查找; (b) 按关键字的相对关系整理后以递增或递减形式连续存放,则查找时使用顺序法或二分法比较查找。 (2)二叉排序树,从根开始进行比较查找。 不足:查找时无法根据关键字的值估计数据元素可能在的位置。 9.3 哈希(Hash)表和哈希法 存储数据元素时,利用一个Hash函数根据数据元素的关键字计算出该数据元素的存储位置,查找时,也是根据给定的数据元素的关键字计算出该数据元素可能存储位置,这样一来,存储和查找的效率相当高, 哈希表也称为散列表,其数据元素的存储一般是不连续的。 通过Hash函数计算出的地址称为哈希地址或散列地址。 9.3.1 根据设定的哈希函数H(k)和处理冲突的方法 Hash函数实现的是将一组关键字映象到一个有限的地址区间上,理想的情况是不同的关键字得到不同的地址。 设K1和K2为关键字, 若K1≠K2,H(K1)=H(K2),则称 K1,K2为同义词,K2与K1为发生了冲突 例 设 H(k)=k%17 k1=5 k2=22 ∵ H(5)=5%17=5 H(22)=22%17=5 H(5)=H(22)=5 ∴ 5和22是同义词,5和22发生冲突 ... ... ... 150 20.8 4 11.0 3 12.6 2 10.5 1 序号 (地址) 年 龄 人 数(万) 1 2 3 4 150 H(key)=key = 地址 H(年龄)= 年龄 key 9.3.2 构造哈希函数的方法 1.直接定址法 取关键字或关键字的某个线性函数值为哈希地址 H(key)=key H(key)=a.key+b 例1 人口统计表 .. .. ... ..... ...... 90 80 女 王 伟 200044 .. .. ... ..... ...... 88 82 女 吴晓英 200043 83 90 男 王 伟 200042 75 80 男 刘大海 200041 1 2 3 4 n key 序号 (地址)学 号 姓 名 性别 数学 外语 H(key) = key - 200040 = 地址 H(学号)= 学号- 200040 例2 学生成绩表 ZOO YAB FOX DAT CAD ABC 1 2 3 4 5 6 25 26 序号 标识符(key) H(key)=key的第一个字母在 字母表中的序号 key =ABC CAD DAT FOX YAB ZOO H(key)=1 3 4 6 25 26 例3 标识符表 2.除留余数法 设哈希表HT[0..m-1]的表长为m,哈希地址为key除以p所的的余数: H(key)=key MOD p //PASCAL语言 H(key)=key % p //C语言 其中:MOD,%为“取模”或“求余” p=m ,p为接近m的质数(素数), 如: 3,5,7,11,13,17,19,23,29,31,37...... 或不包含小于20的质因子的合数,如:

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档