B-tree检索技术的算法

 B-tree检索技术的算法

    这里先简单的介绍一下搜索算法,搜索算法是利用计算机的高性能来有目的的穷举一个问题的部分或者全部可能情况,从而求出问题的一种方法。搜索过程实际上是根据初始条件和预期目的构造一棵解答树并寻找预期目标状态的节点的过程。所有的搜索算法从其最终的实现上来看,都可以划分为两个部分控制结构和产生系统,而所有的算法优化就是通过优化控制结构完成的。

    这里只与一种比较常见的检索技术HASH做一下对比。B-tree相对于普通的有序树,它有两个优点:一是它的复杂度天然就是严格O(logn),不像普通的二叉树,可能退化成O(N)的,也不像平衡二叉树(AVL)一样得写得很辛苦才可以平衡;二是利用了存储系统的特点,B-tree是有序的,而且是基于比较有序的,所以它的复杂度不可能低于O(logn),所以比较的次数不会比别的树少,但是它利用了存储系统一次读大块数据比多次读小量数据要快的特点,一个节点有M个儿子,这M个儿子可以连续存储,也可以一次读进来,所以B-tree调优很重要一点就是根据硬件的特点,选择M。对于一些简单的检索使用Hash比较方便。但当检索海量文件时,它的性能就体现出来了:

    一是B-tree是有序的,这点可以做很多事情,比如排序,比如查找距离最近的数,比如查找区间。

    二是B-tree的扩展更缓和,在B-tree里增加节点很容易,复杂度也可控,而在HASH里,HASH表负载过高之后性能会急剧下降,如果要扩大HASH表,这是一个很痛苦的过程。

    三是HASH的时间复杂度O(1)只是一个数学期望值,最坏情况下可能是O(N)的。

        B-tree有2 种主要节点:非叶节点(索引节点)和叶节点。非叶节点称作索引节点是因为这些节点除了保存索引信息外不会有其他任何信息。并且B-tree中的一个非叶节点的结构可以为数组的形式存在,即一个节点元素的个数,当M值及其阶数确定时会有严格的限定时,为后续的检索提供了有力的条件限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值