【发布时间】:2021-08-23 03:02:55
【问题描述】:
我已经在 python 中实现了最小堆,但经过一些测试后,我意识到有时大约在每 10 次插入后,它会将其置于错误的位置(父级大于子级)。 代码:
class minHeap():
def __init__(self):
self.heap = [] # main array
def get_parent(self, i):
return i//2
def bubble_up(self):
i = len(self.heap)-1
p = self.get_parent(i)
while self.heap[p] > self.heap[i]:
self.heap[i], self.heap[p] = self.heap[p], self.heap[i] # swapping parent and child
i = p
p = self.get_parent(i)
def insert(self, k):
self.heap.append(k)
self.bubble_up()
我最近 2 个小时一直在寻找错误,所以如果有人能帮助我,我将不胜感激。
【问题讨论】:
-
如果您真的需要帮助,请编辑您的代码,使其成为minimal reproducible example - 包括导入和一些最少的数据 - 以便任何人都可以将代码粘贴到文件中并且 无需添加任何东西运行你的代码来查看同样的问题。
-
您的代码仍然不是minimal reproducible example - 您需要包含一些代码来创建类的实例/调用您的方法,以及一些数据,并显示您如何知道分配是 '错误的'。自己尝试一下,就好像您正在阅读此问题一样 - 您需要在问题中的代码中添加什么才能看到与提出问题的人相同的结果?现在添加这个额外的代码,这样任何人都可以在您的问题中运行代码而无需添加任何内容
标签: python data-structures heap