当前位置: 首页 > news >正文

做电影网站犯罪吗/百度灰色词排名代发

做电影网站犯罪吗,百度灰色词排名代发,企业手机网站建设联系方式,杭州网络推广运营公司转载:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/25/2608880.html 一、B树 1.B树定义与特性 B树是B-树的变体,也是一种多路搜索树: 其定义基本与B-树同,除了: 1).非叶子结点的子树指针与关键字个数相同; 2).…

转载:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/25/2608880.html

一、B+树

1.B+树定义与特性

B+树是B-树的变体,也是一种多路搜索树:

其定义基本与B-树同,除了:

1).非叶子结点的子树指针与关键字个数相同

2).非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树B-树是开区间);

3).为所有叶子结点增加一个链指针

4).所有关键字都在叶子结点出现

为了全面 这里给出网上另外一种说法:

一棵m阶的B+树和m阶的B树的差异在于:

      1.有n棵子树的结点中含有n个关键字; (而B 树是n棵子树有n-1个关键字)

      2.所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (而B 树的叶子节点并没有包括全部需要查找的信息)

      3.所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非终节点也包含需要查找的有效信息)

下图给出典型的3阶B+树示例

 

B+的特性:

1).所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;

2).不可能在非叶子结点命中;

3).非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;

4).更适合文件索引系统;

 

2.B+树的基本操作

1)查找操作

     对B+树可以进行两种查找运算:

  a.从最小关键字起顺序查找

  b.从根结点开始,进行随机查找

  在查找时,若非终端结点上的剧组机等于给定值,并不终止,而是继续向下直到叶子结点。因此,在B+树中,不管查找成功与否,每次查找都是走了一条从根到叶子结点的路径。其余同B-树的查找类似。

2).插入操作

      B+树的插入与B树的插入过程类似。不同的是B+树在叶结点上进行,如果叶结点中的关键码个数超过m,就必须分裂成关键码数目大致相同的两个结点,并保证上层结点中有这两个结点的最大关键码。(算法见百度百科)

3)删除操作

      B+树的删除也仅在叶子结点进行,当叶子结点中的最大关键字被删除时,其在非终端结点中的值可以作为一个“分界关键字”存在。若因删除而使结点中关键字的个数少于m/2 (m/2结果取上界,如5/2结果为3)时,其和兄弟结点的合并过程亦和B-树类似。

 

PS:

a.不同于B+树只适合随机检索,B+树同时支持随机检索和顺序检索,在实际中应用比较多.

b.为什么说B+树比B 树更适合实际应用中操作系统的文件索引和数据库索引?

1) B+树的磁盘读写代价更低

     B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

    举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B+树内部结点只需要1个盘快(全部关键字都在叶结点的缘故?)。当需要把内部结点读入内存中的时候,B-树就比B+树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)(B+树的内结点只有索引的作用,何来“把内部结点读入内存”...,对于B+树找到叶结点就可以,另外B+树可以顺序查找)。

2) B+树的查询效率更加稳定

     由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当

c.B+树和B-树最大的不同点是:

1).B-树的关键字和记录是放在一起的,叶子节点可以看作外部节点,不包含任何信息;B+树的非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。

2).在B-树中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存在;而B+树中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在叶子节点中还要再比较关键字。从这个角度看B-树的性能好像要比B+树好,而在实际应用中却是B+树的性能要好些。因为B+树的非叶子节点不存放实际的数据,这样每个节点可容纳的元素个数比B-树多,树高比B-树小,这样带来的好处是减少磁盘访问次数。尽管B+树找到一个记录所需的比较次数要比B-树多,但是一次磁盘访问的时间相当于成百上千次内存比较的时间,因此实际中B+树的性能可能还会好些,而且B+树的叶子节点使用指针连接在一起,方便顺序遍历(例如查看一个目录下的所有文件,一个表中的所有记录等),这也是很多数据库和文件系统使用B+树的缘故。

 

二、B*树(这个网上介绍的甚少,教科书我也没有找到细致的介绍)

B*Tree是B+树的变体,在B+Tree的非根和非叶子结点(内结点)再增加指向兄弟的指针

B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2);

B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针;

B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针

所以,B*树分配新结点的概率比B+树要低,空间使用率更高。

 

http://www.jmfq.cn/news/5267413.html

相关文章:

  • 长沙做网站kaodezhu/seo手机关键词网址
  • 建设百度网站/seo费用
  • 上海高端工作室网站/网络推广公司可不可靠
  • 建设银行网站怎么设置转账额度/产品运营主要做什么
  • 网站手机站怎么做的/代刷网站推广
  • 长沙网站制作费用/河源新闻最新消息
  • 广西网站建设价格/app推广在哪里可以接单
  • wordpress新建页面不能保存路径/贵州快速整站优化
  • 泊头做网站的/百度竞价推广效果怎么样
  • 整站优化温州怎么做?/网上国网app
  • 房地产开发建设网站/抖音seo软件
  • 网站建设 价格低/查图百度识图
  • 网站后台修改导航栏/公司seo是什么职位
  • 用哪个网站做相册视频/广州网站推广运营
  • 是做网站好还是做游戏好/网络黄页平台网址有哪些
  • 用java可以做网站吗/重庆森林粤语完整版在线观看免费
  • 网站建设培训龙岗/百度网盘怎么找片
  • 网站设计流程是/小程序开发哪家好
  • 开个淘宝店做网站设计好吗/网站不收录怎么办
  • 17网站一起做网店 新塘/深圳百度seo怎么做
  • 营销网站开发渠道有哪些/深圳seo云哥
  • wordpress win10/百度seo原理
  • 网站管理助手数据库/app推广之家
  • 企业网站建设实验报告/百度搜索什么关键词排名
  • wordpress目录迁移/浙江关键词优化
  • 网站制作经费预算/发布软文平台
  • 上海工业网站建设/市场监督管理局上班时间
  • 新疆维吾尔建设厅网站官网/5000人朋友圈推广多少钱
  • 有网站源程序怎么做网站后台/seo赚钱吗
  • 岳阳公司做网站/bt蚂蚁磁力搜索天堂