import heapq
def sort__():
lp=ls.copy()
while (lp!=[]):
print(heapq.heappop(lp),end=' ')
print()
ls=[] #堆使用列表维护,可以创建空的列表表示空堆
ls=[3,6,8,1,2,4]
heapq.heapify(ls) #将一个无序的列表转换为堆,时间为O(n)
sort__()
num=10
heapq.heappush(ls,num) #将一个数插入堆中,时间为O(logn)
sort__()
heapq.heappop(ls) #将堆中最小的元素弹出,时间为O(n) [堆调整]
sort__()
heapq.heappushpop(ls,1) #将num插入,然后弹出最小元素。
sort__()
heapq.heapreplace(ls,0) #先弹出最小的,在放入数据
sort__()
c1,c2,c3=[3,4,4],[2,5,99],[1,6,10] #c1,c2,c3已经被排好了。可使用merge进行多路归并。
c4=[i for i in heapq.merge(c1,c2,c3)]
print(c4)
n=3
a1=heapq.nlargest(n,ls,key=None)
a2=heapq.nsmallest(n,ls,key=None)
print(a1,a2)