B树、B-树、B+树、B*树的特点 及其性能比较 http://blog.csdn.net/panghuizl/article/details/6921631
2016-02-23 21:09
866 查看
B树、B-树、B+树、B*树的特点 及其性能比较
标签: 存储算法2011-10-31 15:38 3658人阅读 评论(1) 收藏 举报
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/b367fdce88ee208da19a58e7fab01f44.jpg)
分类:
各种数据结构(1)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/b16356edc9d65f9de5798055c2b20c3c.jpg)
B树、B-树、B+树、B*树的特点:
B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;
B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;
所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;
B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;
B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;
性能比较:
性能相当,都等价于在关键字全集做一次二分查找;
B-树 改善了B树的平衡问题,
B+树比 B-树 更适合文件索引系统(结构上的改善),
B*树比B+树改善了空间利用率。
原文连接:B树、B-树、B+树、B*树的特点
红黑树和AVL树的比较:
红黑树:
(1)并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。红黑树能够以O(log2 n) 的时间复杂度进行搜索、插入、删除操作。
(2)此外,由于它的设计,任何不平衡都会在三次旋转之内解决。红黑树能够给我们一个比较“便宜”的解决方案。红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高。
AVL树:
(1)它的左子树和右子树都是AVL树,左子树和右子树的高度差不能超过;
(2) 查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树;
(3)一棵n个结点的AVL树的其高度保持在0(log2(n)),不会超过3/2log2(n+1)
一棵n个结点的AVL树的平均搜索长度保持在0(log2(n)).
一棵n个结点的AVL树删除一个结点做平衡化旋转所需要的时间为0(log2(n)).
相关文章推荐
- TCP协议与UDP协议
- 常见网络协议端口号整理
- 基于layer mobile手机端弹出框,询问框(PC端推荐layer和artDialog:http://download.csdn.net/download/cometwo/9437895)
- TCP TimeWait状态详解(比较全)
- Python3网络相关
- 基础网络学习记录
- C++之路进阶——网络流(晨跑)
- 网络编程_InetAddress_InetSocketAddress_URL_爬虫原理JAVA185-186
- 浏览器被劫持到http://hao.169x.cn/?v=108的解决办法
- HttpURLConnection请求
- Caffe下python环境的编译和使用draw_net.py绘制lenet网络结构图
- IOS使用AFNetworking进行网络通信
- 使用HttpClient进行远程接口测试
- 网络编程2---select poll epoll
- Apache2.4之httpd.conf配置详解
- 安卓Xutils3网络工具,注解工具,图片工具和日志工具的使用,以及对网络工具的封装
- java 反射调用类的方法 http://weiliuhong1.iteye.com/blog/1222381
- Servlet和Android网络交互基础(1)
- 通过Java反射调用方法 http://blog.csdn.net/ichsonx/article/details/9108173
- java-commons-HttpClient超时设置setConnectionTimeout和setSoTimeout