代码如下:
def heap_adjust(arr, i, l):
temp = arr[i]
j = i*2 +1
while j< l:
if j+1< l and arr[j]<arr[j+1]:
j += 1
if arr[j]<temp:
break
arr[i], arr[j] = arr[j], arr[i]
i = j
j = i*2 + 1
def heap_sort(arr):
l=len(arr)
print("original arr:", arr)
l1= l//2
for i in range(l1):
heap_adjust(arr, l1-i-1, l)
print("max-heap: ", arr)
for i in range(l):
arr[0], arr[l-i-1] = arr[l-i-1], arr[0]
heap_adjust(arr, 0, l-i-1)
print("ordered: ", arr)
if __name__ == '__main__':
arr=[0, 1, 3, 7, 8, 4, 9, 10, 2, 5, 11, 12, 6, 13, 14]
heap_sort(arr)