python創建堆的方法實例講解
1、說明
創建堆有兩種基本方法:heappush() 和 heapify()。
當使用heappush()時,當新元素添加時,堆得順序被保持瞭。
如果數據已經在內存中,則使用 heapify() 來更有效地重新排列列表中的元素。
2、實例
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創建堆的方法實例講解的文章就介紹到這瞭,更多相關python創建堆的方法有哪些內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 分享Python中四個不常見的小技巧
- Python中的元組(Tuple)操作實例詳解
- 分析講解Java Random類裡的種子問題
- python常用內置模塊你瞭解嗎
- Python如何生成隨機數及random隨機數模塊應用