java数据结构和算法08(B树的简单原理)

 这一篇首先会说说前面剩余的一点知识2-3树,然后简单说说B树,不写代码,只是简单看看原理吧!

  为什么要说一下2-3树呢?了解2-3树之后能更快的了解B树;

 

1.简单看看2-3树

  其实我们学过了前面的2-3-4树之后,再看2-3树就太容易了,2-3树中任意一个节点最多只有三个子节点,而且节点中只有两个空位置可以存数据;除了分裂,其他的都和2-3-4树一样的,就不多说了,下面我们就随意看看节点分裂吧!

  首先要区分2-3-4树和2-3树分裂的的不同,对于2-3-4树来说是插入数据之前首先会把满的叶节点分裂,把三个数据分配完了之后再插入数据到节点中;而对于2-3树来说,是在插入期间,什么是插入期间呢?看看下图:

  上图中的操作的目的就是向2-3树中插入85,插入的时候会判断该叶节点是不是满的,假如是满的 ,首先就80、90、85进行从小到大排列 为80、85、90,然后80不动,中间的数据放进父节点中,最后将90放入新创建的节点当中,就ok了;这里假如85在进入父节点的时候发现父节点满了,那么父节点就会分裂,这里跟2-3-4树差不多,重复上述步骤,左边数据不动,将中间值放入父节点,右边数据放入新建节点;说起来很绕,请看下图:

  其实没什么新的东西,弄懂了2-3-4树,再看2-3树几分钟就差不多了,这里也就是随意看看,有兴趣的可以用代码实现一下,这里就是注意一下2-3树和2-3-4树分裂过程的不同就可以了;

 

2.硬盘存储数据

  我们前面说的所有数据结构都是存在于内存中的,当电脑一关机内存就会全部释放,所有的数据结构都会消失;但是有没有想过硬盘中是怎么存数据的啊?

  于是就有了B树,属于一种多叉树,在外部存储器存数据的时候起很大的作用,外部存储暂时就理解为硬盘即可!话说数据为什么要存到硬盘中呢?最大的有点就是硬盘便宜,而且硬盘空间比内存大得多,可以存很多很多的数据,而且硬盘最大的优点就是可以持久化,就是电脑即使关机了,数据还是存在硬盘中不会消失;

  但是存在硬盘中有个很大的问题,就是从硬盘中读取数据的时候太慢太慢了,而从内存中读取数据的速度大概比硬盘读取快几万倍,相差一个数量级;其实对于cpu的运算速度来说从内存中读数据还是太慢了,于是就有了缓存,后面有机会再说......

  虽然每年硬盘技术都在提高,但是内存技术提高的更快,可以想象内存和硬盘的速度只会越来越大!

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值