import heapq
nums = [ 8, 2, 23, 1, 7, -4, 18, 23, 42, 37, 2]
# heapq.heapify 將list x 轉換成堆,原地,線性時間內。
heapq.heapify(nums)
print(nums)
# 將 item 的值加入 heap 中,保持堆的不變性。
print(nums)
# 彈出並返回 heap 的最小的元素,保持堆的不變性。如果堆為空,丟擲 indexerror 。使用 heap[0] ,可以只訪問最小的元素而不彈出它。
print(nums)
# 訪問heap最小的值
small= nums[0]
print(small)
print(samll_one,nums)
# heapq.heapreplace(heap, item)
#彈出並返回 heap 中最小的一項,同時推入新的 item。 堆的大小不變。 如果堆為空則引發 indexerror。
second_small = heapq.heapreplace(nums, 90000)
print(second_small,nums)
# 反轉堆
heapq._heapify_max(nums)
print(11111,nums[0])
# 刪除堆中最大的
print("delete",nums)
# 彈出並返回 heap 中最大的一項,同時推入新的 item。 堆的大小不變。 如果堆為空則引發 indexerror。
heapq._heapreplace_max(nums, 90)
print(44444444444,nums)
# heapq.nlargest(n, iterable, key=none)
# 返回前三個比較大的list
large_list = heapq.nlargest(3, nums)
print(large_list)
# heapq.nsmallest(3, nums)
# 返回後三個比較小的list
last_list= heapq.nsmallest(3, nums)
print(last_list)
portfolio = [,,
,,
,]cheap = heapq.nsmallest(3, portfolio, key=lambda s: s['price'])
expensive = heapq.nlargest(3, portfolio, key=lambda s: s['price'])
print(cheap)
print(expensive)
Python 堆(heap)的基本操作
python 堆 heap 的基本操作 import heapq 載入heap庫,heap指的是最小堆使陣列轉化為堆 heapq.heapify list heap 1,3,4,2,6,8,9 heapq.heapify heap heap 1,2,4,3,6,8,9 為heap增加元素 heap ...
堆 heap 排序演算法
堆排序演算法是複雜的排序演算法,是不穩定的排序演算法。1 堆排序的基本思想 堆排序定義 n個有序列a1,a2,an成為堆,有下面兩種不同型別的堆。大根堆 所有子節點都大於其父節點,即ai a2i且ai a2i 1。小根堆 所有子節點都小於其父節點,即ai a2i且ai a2i 1。若將此序列所儲存的...
堆(Heap)的實現
這次實現了堆,這個堆不是指系統堆疊的堆,是一種資料結構,見下圖 堆的本質就是乙個陣列 上圖中,紅色的是值,黑色的是下標 簡單的來說就是把乙個陣列看成是二叉樹,就像上圖 大堆和小堆分別是指根節點比孩子節點的值大或者是小,看了上圖之後就可以發現,父親節點和孩子節點之間下表的關係,parnet child...