线性哈希(Linear Hash)

本文深入探讨了线性哈希(LinearHash)算法,这是一种动态伸缩的哈希表算法,通过分解重组哈希任务为小任务,有效分散了重组哈希的延时。文章详细介绍了线性哈希的插入和分裂过程,以及其如何利用二进制位特性确保元素分布均匀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性哈希(Linear Hash)是一种能动态伸缩的哈希表算法。

设当前的桶数为n, low=2^i-1, high=2^i (^符号表示幂运算), 取整数i刚好使得 low < n <= high

插入过程

设k为元素的key计算的一个大哈希值。 h = k % high, 如果 h < n 则放入桶h中, 否则放入桶key % low中,这一过程称作折叠。

分裂过程

如果发现哈希表的填充因子大于预定值,则增加一个桶,n=n+1。 本来应在新增桶位置的元素,按照插入过程描述的那样,可能已被放入了n % low桶中,所以要对桶n % low进行一次分裂。 如果n > high,则增加i,调整low和height的值。

总结

low和high是2的次方数,这样的结果恰好使得放入同一个桶中的元素k的二进制表示位的后i位相同,所以有些书上用二进制位来解释线性哈希。 线性哈希把本来的一次重组哈希的任务分解为每次只分裂一个桶的小任务,分散了重组哈希的延时。

转载于:https://my.oschina.net/chunquedong/blog/607339

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值