25、无常规计数器的胖堆:实现、实验与分析

无常规计数器的胖堆:实现、实验与分析

1. 基本操作分析

1.1 删除操作

当执行删除操作时,被删除元素所在根节点的违规库存排名需要更新。随后,该根节点可被移除,其所有子树会插入到树库存中。树库存中的树数量最多增加 (2 \log_3 n + O(1)),可能需要进行多次树缩减操作。树缩减涉及的元素比较次数最多为 (2 \log_3 n + O(1))。

若删除的元素是最小值,需要扫描所有根节点和违规节点来找到新的最小值,并更新最小指针,这最多需要 (3 \log_3 n + O(1)) 次元素比较。删除操作会使元素数量 (n) 减 1,可能导致违规节点数量超过阈值,此时需要进行违规缩减。总的来说,删除操作执行的元素比较次数最多为 (5 \log_3 n + O(1) \approx 3.16 \lg n),时间复杂度为 (O(\lg n))。

1.2 合并操作

假设要合并的两个队列分别包含 (m) 和 (n) 个元素,且 (m \leq n)。合并操作主要有两个任务:
- 合并树库存 :将较小树库存中的树逐个移动到较大的树库存中,然后通过重复树缩减操作,使树的数量在允许的阈值范围内。此过程涉及的元素比较次数最多为 (2 \log_3 m + O(1))。
- 合并违规库存 :保留两个可调整大小数组中较大的一个作为合并后优先队列的违规库存基础,将另一个数组中的所有违规节点移动到该库存后将其丢弃。每次移动违规节点时,可能需要执行违规缩减,此过程涉及的元素比较次数最多为 (3 \log_3 m + O(1))。

合并操作执

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值