堆排序(python)

來源:互聯網
上載者:User

標籤:

堆排序演算法

先看第一個函數HeapAdjust,這個函數功能是在已經是構成堆的二叉樹上,如果節點k資料變化了,對節點k進行修正,使之成為一個新的堆二叉樹,n為資料長度。

def HeapAdjust(lst,k,n):    while(2*k+1<n):        j=2*k+1        if j+1<n and lst[j]>lst[j+1]:            j=j+1        if lst[j]<lst[k]:            temp=lst[k]            lst[k]=lst[j]            lst[j]=temp            k=j        else:            break    return lst

HeapSort函數,利用上面的第一個函數構建堆二叉樹,並利用上面的函數進行排序

def HeapSort(lst):    n=len(lst)    for i in range(int(n/2)-1,-1,-1):        lst=HeapAdjust(lst,i,n)    print(lst)    for i in range(n-1,0,-1):        temp=lst[0]        lst[0]=lst[i]        lst[i]=temp        lst=HeapAdjust(lst,0,i)    return lst

測試函數

a=[1,5,2,8,3,4,6,9,7]print(a)result=HeapSort(a)print(result)


堆排序(python)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.