defheap_adjust(heap,heap_size,p):
largest = p
left_child =2*p +1
right_child =2*p +2if left_child < heap_size and heap[left_child]> heap[largest]:
largest = left_child
if right_child < heap_size and heap[right_child]> heap[largest]:
largest = right_child
if largest != p :
heap[p],heap[largest]= heap[largest],heap[p]
heap_adjust(heap,heap_size,largest)defheap_sort(heap):
n =len(heap)#build heapfor i inrange(n,-1,-1):
heap_adjust(heap,n,i)#exchange heap's top with the heap's last elementfor i inrange(n-1,0,-1):
heap[0],heap[i]= heap[i],heap[0]
heap_adjust(heap,i,0)
堆排序def heap_adjust(heap,heap_size,p): largest = p left_child = 2*p + 1 right_child = 2*p + 2 if left_child < heap_size and heap[left_child] > heap[largest]: largest = left_child if right_child < heap_size and heap[righ