数据结构第五章查找范例.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、B树的检索 key ki ki+1 pi 首先在根结点的关键码集合中进行检索,若 key= = ki ,则检索成功;否则, key一定在ki 和 ki+1 之间(存在某个i),沿pi继续查找,重复上述过程, 直到检索成功,或pi为空,检索失败。 B树的运算 性能分析 在B树是进行查找包含两种基本操作:(1)在B树中找结点;(2)在结点中找关键字。由于B树通常存储在磁盘上,因此前一操作是在磁盘上进行的,而后一操作是在内存中进行的,即在磁盘上找到指针p所指结点后,先将结点中信息读入内存,然后查询。而在磁盘上进行操作比在内存中操作慢得多,因此在磁盘上进行查找的次数,即待查关键字所在结点在B树是的层次数,是决定B树查找效率的关键因素。 现在考虑最坏的情况:含n个关键字的m阶B树的最大深度 为log ?m/2?(n+1)/2 + 1 2. B树的插入 深度为h的m阶B树,新结点一般插入到h层,首先检索到第h层,确定插入结点位置。 (1)若被插入结点中关键码个数小于m-1,则插入。 (2)若被插入结点中关键码个数等于m-1,则引起 结点“分裂”。 可如下实现“分裂”: 假设*p结点中含有信息为: m,p0, (k1,p1), …, (km, pm) 将*p分裂为*p和*p’两个结点,分别含有信息为: *p : ?m/2?-1, p0, (k1,p1), …(k ?m/2?-1,p?m/2?-1) *p’:(m- ?m/2?, p?m/2?, (k ?m/2+1?, p ?m/2+1?), … (km, pm) 把关键字k ?m/2?和指针*p’一起插入到*p的双亲结点中。 3. B树的删除 在深度为h的m阶B树中删除一个关键码,首先检索到该关键码所在的结点,然后根据不同情况进行删除。 (1)若结点在第h层,且关键码数目大于?m/2?-1, 则只需从该结点中删去该关键码ki。 (2)若结点在第h层,且关键码数目等于?m/2?-1, 该结点左兄弟(或右兄弟)结点中的关键码数目 大于?m/2?-1,则需调整被删除关键码的结点, 兄弟结点,以及父结点中的信息。方法:设父结 点 中的信息为:(p0, k1,p1,k2,p2,…,kxpx),由pi指向 被删除关键码的结点,其的信息为: (p ? 0, k ?1,p ?1,k ? 2,p ?2,…,k ? y p ? y), 兄弟结点中的 信息为:(p ? 0, k ?1 ,p ? 1 ,k ? 2 ,p ?2 ,…,k ?z p ? z)。 则应将k??(x+y)/2?上移到父结点中,并将左(或右) 兄第中大于(或小于) k??(x+y)/2?及父结点中的ki移 到被删除关键码的结点中。 (3) 若结点在h层,且关键码数目及其相邻的兄弟结 点中的关键码数目均等于?m/2?-1,则需合并结 点。假设该结点有右兄弟,且其右兄弟结点由双 亲结点中的指针pi所指,则在删去关键码之后, 它所在结点中剩余的关键码和指针,加上双亲结 点中的关键码ki一起,合并到pi所指兄弟结点中 (若没有右兄弟结点,则合并到左兄弟结点中)。 (4) 若结点的层数小于h,设删除结点中第i个关键码 ki ,则用pi所指的子树中的最小关键码k与ki互换, 然后再删除关键码ki 。 50 63 20 35 23 30 66 90 56 42 3 7 30 35 int MovElemToHashT(DataType *e_addr,OPenHash l_t,int h_addr) { int status; NodeType *q; status=0; q=New NodeType; if(q) { q-elem=*e_addr; q-next=*(l_t+h_addr); *(l_t+h_addr)=q; status=1; } return status; } 设有100个数据元素,采用折半搜索时,最大比

文档评论(0)

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

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

1亿VIP精品文档

相关文档