我将此库用于堆:
from Queue import PriorityQueue
我需要触发heapify,因为在此优先级队列中我插入了一个节点类,并且优先级队列是基于node.val排序的,如下所示:
class Node():
__init__(self,val,text):
self.val = val
self.text = text
我的pq:
pq = PriorityQueue()
first = Node(1,'abcd')
pq.put((first.val,first))
xyz = Node(10,'asdf')
pq.put((xyz.val,xyz))
fsa = Node(7,'asdsbcd')
pq.put((fsa.val,fsa))
现在它可以正常工作,但如果我想更改first nodes值,例如:
first.val = 100
有没有像pq.heapify()之类的方法
如何调用heapify方法以便它可以对其进行排序?因为如果我不这样做,那么它将对列表进行排序,并假设第一个仍然是1而不是100
我认为最好使用heapq library作为堆
然后可以使用来自this answer的进程更新堆中的最小值,如下所示
优势:
代码
测试
测试1。添加元素并转储堆
结果
测试2。删除最小值,并添加为具有较大值的新元素
结果
测试3:将元素添加为列表
结果
相关问题 更多 >
编程相关推荐