二项队列

本文介绍了二项队列这一数据结构,它由堆序的二项树集合构成,能实现高效的合并和查找最小元素操作。二项队列的合并策略基于二项树的性质,而DeleteMin操作涉及树的拆分与重新组合。通过理解二项树的存储方式和操作原理,可以更好地掌握二项队列的使用。
摘要由CSDN通过智能技术生成

回忆一下左叉堆和斜堆。二者进行插入,删除的平均时间为O(log N)。虽然说已经够为快速,但前人还发明了另外一种不仅能将最坏的操作时间减少至O(logN),同时插入操作的时间为Θ(N)的数据结构:二项队列(binomial queue)

 

 

1、二项队列结构

二项队列不同于之前的优先队列之处在于:二项队列是一棵堆序的树的集合,因此称之为森林(forest)。其中的每一棵树为二项树(binomial tree)。

二项树的表示有两种方式。

第一种:(图片来源见水印)

可以看到,假设B0、B1、B2......为一个规律数列,则可以看到Bn和B(n-1)的关系为Bn由两个相同的B(n-1)二项树构成,其中的两个B(n-1)二项树的根相连接,并将其中的一个根作为新生成的Bn的根。

另外的一种表示方式为根节点存储在数组中时应当表示的形式,不过在介绍这种方式之前,我们先分析二项队列的部分操作。

 

2、二项队列操作

对于单个二项树来说,我们要在事前明确二项树也满足堆的堆序性质。即根存储的元素为单棵树中最小的元素,因此对于logN棵不同的树,要找到这些树中最小的单元,只用搜索所有的根节点,所消耗的时间为O(log N)。

 

之后我们介绍的操作为合并,即Merge,应当注意的是,前面我们Merge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值