【发布时间】:2015-04-20 18:39:57
【问题描述】:
下面构建最小堆的代码有什么问题? bubble_up 方法不起作用,它得到一个超出范围的索引错误。
def __init__(self):
self.heap = []
self.heap_size = 0
def bubble_up(self, i):
print(self.heap)
while i // 2 > 0:
if self.heap[i] < self.heap[i // 2]:
tmp = self.heap[i // 2 - 1]
self.heap[i] = self.heap[i // 2]
self.heap[i // 2] = tmp
print(self.heap)
i = i // 2
def insert(self, data):
self.heap.append(data)
self.heap_size = self.heap_size + 1
self.bubble_up(self.heap_size)
if __name__ == "__main__":
min_heap = MinHeap()
min_heap.insert(5)
min_heap.insert(4)
min_heap.insert(3)
min_heap.insert(2)
min_heap.insert(6)
【问题讨论】:
-
你的调试说发生了什么?
-
请问heap that comes with python有什么问题吗?
-
索引错误,我正在尝试构建自己的 python 没有任何问题...
-
您的调试并没有告诉您有索引错误,您的程序会告诉您。调试是确定程序为什么正在做它正在做的事情(或至少在它运行时发生了什么)的行为。编写程序然后要求 SO 为您调试不会发生。编写程序、调试它并就调试输出/信息寻求帮助都有可能发生。
-
我没有看到的索引方法有问题。在查看我已经完成的索引方法之后,我看不到我可以做哪些进一步的调试,但用户仍然无法忍受错误或其发生的原因
标签: python algorithm python-3.x data-structures heap