如何解决max_heapify 遍历堆以获取下一级节点的迭代方式
我正在尝试编写一个迭代控制循环而不是递归,因为它更有效率有人可以告诉我我的代码是否有意义: 递归版本:
def max_heapify(array,i):
left = 2 * i
right = 2 * i + 1
length = len(array) - 1 # for termination condition check
largest = i
if left <= length and array[i] < array[left]:
largest = left
if right <= length and array[largest] < array[right]:
largest = right
if largest != i:
array[i],array[largest] = array[largest],array[i]
max_heapify(array,largest)
迭代版本(我认为这是错误的??)
def max_heapify(array,i):
left = 2 * i
right = 2 * i + 1
length = len(array) - 1 # for termination condition check
largest = i
if left <= length and array[i] < array[left]:
largest = left
if right <= length and array[largest] < array[right]:
largest = right
if largest != i:
array[i],array[i]
i= largest
我能得到关于迭代版本有什么问题的建议吗
解决方法
其实我觉得我想
def max_heapify(array,i):
left = 2 * i
right = 2 * i + 1
length = len(array) - 1 # for termination condition check
largest = i
if left <= length and array[i] < array[left]:
largest = left
if right <= length and array[largest] < array[right]:
largest = right
if largest != i:
array[i],array[largest] = array[largest],array[i]
i= largest
else:
break
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。