def maxheapify(A, i):
l = 2 * i + 1
r = 2 * i + 2
if l < Aheapsize and A[l] < A[i]:
largest = l
else:
largest = i
if r < Aheapsize and A[r] < A[largest]:
largest = r
if largest != i:
A[i], A[largest] = A[largest], A[i]
maxheapify(A, largest)
def bulidmaxheap(A):
for i in range(0, int(len(A)/2) + 1 ):
maxheapify(A, i)
def heapsort(A):
global Aheapsize
Aheapsize = len(A)
bulidmaxheap(A)
for i in range(len(A) - 1, 0, -1):
A[0], A[i] = A[i], A[0]
Aheapsize = Aheapsize - 1
maxheapify(A, 0)
return A
A = [1, 3, 2, 4, 5, 6]
print(heapsort(A))
python實現堆排序--算法導論
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.