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))
发布了8 篇原创文章 · 获赞 0 · 访问量 888

猜你喜欢

转载自blog.csdn.net/t4ngw/article/details/105307143