数据结构—优先队列

优先队列是允许至少下列两种操作的数据结构:Insert(插入)、DeleterMin(删除最小者)。它的工作室找出、返回、删除优先队列最小的元素。

插入操作等于Enqueue(入队)、而DeteMin则是队列中Dequeue(出队)在优先队列中的等价操作。DeterMin函数也变更它的输入。


二叉堆:结构性、堆序性

堆是一棵被完全填满的二叉树。


一棵高为h的完全二叉树有2h到2h+1-1个节点,这意味着,完全二叉树的高是【logN】,所以它是O(logN).

因为完全二叉树很有规律,所以它可以用一个数组表示而不需要指针。


使操作被快速执行的性质是堆序性。在一个堆中,对于每一个节点X,X的父亲中的关键字小于(等于)X中的关键字。根节点除外(它没有父亲)。

根据堆序性质,最小元总可以在根处找到。



插入(Insert):

为将一个元素X插入到堆中,我们在下一个空闲的位置创建一个空穴,否则该树将不是完全树。如果X可以放在该空穴中而不破坏堆的序,那么插入完成,

否则,我们把空穴的父节点上的元素移入到该空穴,这样,空穴就朝着根的方向上行一步。继续该过程知道X可以放入到空穴中为止。

这种策略叫做上滤。



DeleteMin(删除最小值)

DeleteMin以类似于插入的方式处理。找出最小元是容易的,困难的部分在与删除它。当删除一个最小元时,在根节点处产生一个空穴。由于现在堆缺少了一个元素。

因此堆中最后一个元素X必须移动到该堆的某个地方。如果X可以放到空穴,那么DeteleMin完成。否则我们将空穴的两个儿子中的较小者放入空穴,这样就把空穴

向下推了一层。重复该步骤知道X可以放入空穴。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值