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实现堆排序--算法导论
猜你喜欢
转载自blog.csdn.net/t4ngw/article/details/105307143
今日推荐
周排行