【发布时间】:2020-03-07 10:09:14
【问题描述】:
以下用于实现堆排序算法以及 max_heapify 和 build_heap 函数的 python 代码导致以下错误消息:
Traceback (most recent call last):
File "heap.py", line 30, in <module>
build_heap(arr)
File "heap.py", line 25, in build_heap
for i in range(((int(len(array))-1)/2),0,-1):
TypeError: 'float' object cannot be interpreted as an integer
还有代码:
def left(i):
return(2*i)
def right(i):
return(2*i+1)
def max_heapify(array,i,heap_size):
l=left(i)
r=right(i)
largest=i
if(l<=heap_size and array[l]>array[i]):
largest=l
elif(r<=heap_size and array[r]>array[i]):
largest=r
if(largest!=i):
swap(array,i,largest)
max_heapify(array,largest)
def swap(array,a,b):
array[a],array[b]=array[b],array[a]
def build_heap(array):
heap_size=len(array)-1
for i in range(((int(len(array))-1)/2),0,-1):
max_heapify(array,i,heap_size)
arr=[0,10,9,8,7,6,5,4,3,2,1,0]
build_heap(arr)
print(arr)
【问题讨论】:
-
当这是整数除法时,这可能是 Python-2.x 中所写的。
标签: python-3.x algorithm sorting heap heapsort