您好,登錄后才能下訂單哦!
小編給大家分享一下python如何創建堆,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創建堆有兩種基本方法:heappush() 和 heapify()。
當使用heappush()時,當新元素添加時,堆得順序被保持了。
如果數據已經在內存中,則使用 heapify() 來更有效地重新排列列表中的元素。
import heapq from heapq_showtree import show_tree from heapq_heapdata import data heap = [] print('random :', data) print() for n in data: print('add {:>3}:'.format(n)) heapq.heappush(heap, n) show_tree(heap) # output # random : [19, 9, 4, 10, 11] # # add 19: # # 19 # ------------------------------------ # # add 9: # # 9 # 19 # ------------------------------------ # # add 4: # # 4 # 19 9 # ------------------------------------ # # add 10: # # 4 # 10 9 # 19 # ------------------------------------ # # add 11: # # 4 # 10 9 # 19 11 # ------------------------------------
知識點擴展:
創建最大(小)堆
二叉堆本質上是一種完全二叉樹,存儲方式并不是鏈式存儲,而是順序存儲
堆操作:插入(葉子節點上調),刪除(堆頂元素下沉)
堆創建:非葉子節點下沉(從最后一個非葉子節點開始)
最小堆:
最小堆任何一個父節點的值,都小于等于它左右孩子節點的值
創建過程:如果非葉子節點值大于其子節點,將其下沉
最大堆:
最大堆任何一個父節點的值,都大于等于它左右孩子節點的值。
創建過程:如果非葉子節點值小于其子節點,將其下沉
看完了這篇文章,相信你對“python如何創建堆”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。