C的++程序设计第六章查找.ppt

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * B-树的删除 删除都是基于查找成功操作的。 要求删除之后,结点中关键字的个数不能小于?m/2?-1,否则,要从其左(或右)兄弟结点“借”关键字,若其左和右兄弟结点均无关键字可借(结点中只有最少量的关键字),则必须进行结点的“合并”。 B+树 B+树是B-树的一种变形,是在叶子结点上存储信息的树。 m阶B+树的定义如下:m阶B+树或为空树,或为满足下列性质的m叉树: 根结点至少有两棵子树,最多有m棵子树。 每个结点(除根外),至少有?m/2?棵子树,最多有m棵子树。 有n棵子树的结点包含了n个关键字。 所有叶子结点在同一层,并包含了所有关键字,按关键字从小到大顺序链接。 所有非终端结点可以作为叶结点的索引,结点中仅包含其子树中最大(或最小)的关键字。 B+树 例:一棵3阶的B+树 9.3 哈希表 基本思想 在记录的存储地址和它的关键字之间建立一个确定的对应关系;这样,不经过比较,一次存取就能得到所查元素的查找方法 哈希函数 在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。 哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象 哈希函数可写成:addr(ai) = H(ki) ai是表中的一个元素 addr(ai)是ai的存储地址,ki是ai的关键字 定义 哈希表—应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫哈希表 哈希查找—又叫散列查找,利用哈希函数进行查找的过程叫哈希查找 哈希函数只是一种映象,所以哈希函数的设定很灵活,只要使任何关键字的哈希函数值都落在表长允许的范围之内即可 定义 例:一组关键字的集合为{“cat”, “dog”, “pig”, “horse”, “tiger”, “monkey”, “bird” }要求构建一个哈希函数,将这些关键字放入哈希表中。 解决办法:取关键字的首字母在26个英文字母表{a..z}中的位序作为哈希地址,此处地址从0到25。 H(“cat”)=2 H(“dog”)=3 H(“pig”)=15 H(“horse”)=7 H(“tiger”)=19 H(“monkey”)=12 H(“bird”)=1 如果再添加两个关键字“cow”,“mouse”,会发生什么现象? 定义 冲突—key1≠key2,但H(key1)=H(key2)的现象叫~ 同义词—具有相同函数值的两个关键字,叫该哈希函数的同义词 上例中“mouse”和“monkey”是同义词 “cow”和“cat”是同义词 哈希函数通常是一种压缩映象,所以冲突不可避免,只能尽量减少;同时,冲突发生后,应该有处理冲突的方法 Hash函数的构造方法 直接定址法 构造 取关键字或关键字的某个线性函数作哈希地址,即H(key)=key 或 H(key)=a·key+b 特点: 直接定址法所得地址集合与关键字集合大小相等,不会发生冲突 实际中能用这种哈希函数的情况很少 Hash函数的构造方法 例:假设有一学生信息表中记录了10个学生的信息。关键字为学号,取值在96001到96010之间,可构建哈希函数为H(key)=key-96000。 地址 01 02 03 04 05 06 07 08 09 10 学号 96001 96002 96003 96004 96005 96006 96007 96008 96009 96010 年龄 18 19 18 19 20 21 18 19 20 20 …… ……. ……. ……. Hash函数的构造方法 数字分析法 构造 对关键字进行分析,取关键字的若干位或其组合作哈希地址 特点 适于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况 Hash函数的构造方法 1 2 3 4 5 6 7 8 9 10 1 3 1 3 4 5 6 8 6 4 1 3 1 3 4 7 8 7 3 3 1 3 1 3 5 9 8 0 2 4 1 3 1 8 4 2 5 1 6 4 1 3 1 3 5 0 1 7 8 3 1 3 1 8 4 6 9 6 5 3 1 3 1 3 6 1 2 3 4 3 有一组记录,关键码为10位十进制数,哈希地址

文档评论(0)

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

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

1亿VIP精品文档

相关文档