M阶的B树满足的特征:
(1)树的根是一片树叶,或者是儿子数在2到M之间,即[2,M)
(2)除根外,所有非树叶节点的儿子数在⌈M/2⌉ \lceil {M/2} \rceil ⌈M/2⌉到M之间,即[⌈M/2⌉ \lceil {M/2} \rceil ⌈M/2⌉,M)。
(3)所有树叶都在相同的深度。
(4)一个节点最多容纳M-1个数。
散列
1、冲突:当两个关键字到同一个值时称为冲突。
2、解决冲突:分离链接法和开放定址法
3、填装因子:散列表中的元素个数与散列表的大小之比。
4、分离链接法:将散列到同一个值的所有元素保存到一张表中,通过散列函数查要插入的表,然后插入表头。
优点:处理简单,无堆积现象;易于删除;填装因子较小,节省空间。
缺点:给新单元分配地址需要时间,指针需要额外的空间。
填装因子接近1.
5、开放定址法:H(x) = (hash(x) + F(i))%TableSize;
填装因子小于0.5;
需要懒惰删除,因为元素可能引起了冲突绕过了当前元素,如果删除,在查找时会出错。
(1)线性探测法:F(i) = i;即使表相对较空,所占据的单元也会聚集形成一些区块,称为一次聚集。
(2)平方探测法:F(i) = ii,或者F(i) = F(i-1) + 2i-1;散列到同一位置上的元素将探测相同的备选单元,成为二次探测。
(3)双散列:有两个散列函数hash1(x)和hash2(x),当发生冲突时,用第二个散列函数来解决冲突。
(4)再散列:当元素过满或者插入时间过长,建立一个大约两倍的表,再用一个新的散列函数,将原始表中的值按照新的映射插入新表中。
B树与散列
最新推荐文章于 2022-01-04 16:53:32 发布