哈希表基础知识(3)

来源:互联网 发布:网易云课堂mac版 编辑:程序博客网 时间:2024/06/16 05:11

在哈希表基础知识(1)和(2)中我们介绍了两种哈希表表示方法,分离链接法和开放地址法,但是这些都是针对数据可以存储到内存中的数据而言的操作,如果数据量过大,不能存进内存,也就是说我们需要解决磁盘上的检索数据问题。
我们假设每个磁盘区块上可存储的数据是有限的,如果我们用分离链接法或者是开放地址法的话,那么在查找数据的时候我们是需要对多个磁盘区块进行考察的。这样效率比较的低。所以我们考虑。可扩散列是针对数据的比特流进行散列的,它是一种单层树结构(类似于B-树)。在根节点上我们定义所使用的比特数,比如使用两比特,那么根节点就分成4个区域,分别是00,01,10,11.每个区域指向一个磁盘区块(叶节点)。同时注意在每个叶节点定义这个叶节点上的数据共享的最高位的位数dL。比如在00对应的叶节点中的数据为000100,001000,001010,001011.那么dL=2.在执行插入数据操作时,首先在根节点出判断出它应属于那个根节点区域,如果这个根节点区域对应的叶节点上的数据已经满了,那么我们必须分裂这个根节点区域和相应的叶节点,比如我要在10处插入数据,但是这个叶节点数据已满(冲突)。那么我将10分成100,101,然后把相应的叶节点进行分离,对于其他的根节点区域00,01,11,我们也进行相同的分裂,但是相应的叶节点保持不变。

0 0
原创粉丝点击