python實現堆排序--算法導論

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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章