数据结构

1. 为什么文件系统用B树,数据库用B+树而不用hash.

业务场景不同。如果只是单个数据的索引,用hash,因为它的时间复杂度事O(1).
而数据库索引时一般选择多条数据,B+树由于是有序的,并且又有链表相连,因此可以提高查询效率。而且数据库的索引一般在磁盘上。因此数据量大的情况可能无法保障一次性将数据加载到内存,B+树可以保障数据分批加载,并且树的高度也低,提高查找的效率。

二叉排序树插入有序时,就会退化为链表,因此用平衡树来调整树,使得节点尽可能均匀的分布。

红黑树是平衡树的一种。

2. 为什么树要保持平衡性?

树的查找性能取决于树的高度。因此提高树的平衡度尽可能减少树的高度。Java中TreeSet底层是红黑树。

3. B树

B树是一种多路搜索树。m路的B树最多可以拥有m个孩子节点。
文件系统的索引用得较多。文件系统和数据库的数据一般是存储在磁盘上的。不能保证一次把一棵树加载进内存,这时多路的威力就出来了。可以每次加载b树的一个节点,然后一步步往下找。
所以,在内存中,红黑树比B树的效率更高。而涉及到磁盘操作时,b树的效率更高。

4.B+树

B+树是在b树基础上的优化。他的数据都在叶子节点上。同时叶子节点之间还加了指针形成链表。
数据库索引一般是多条数据索引,这时B树需要做局部的中序遍历。可能要做跨层访问。而B+树所有数据都在叶子节点上,不用跨层。由于有链表结构,只需找到首位就可以将全部数据取出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值