Python堆


"""
Python堆:heap 三角形机制
类别:大堆 :pop的时候取的永远是最大值 小堆:pop的时候取的永远是最小值
Python表示:heapq包,在Java中是priorityQueue包
        from heapq import heapify, heappush, heappop
        heapify(): 默认是小堆 heappush():  heappop():默认删除最小值 heaplargest():前n个最大的值
        heapsmallest():前n个最小的值
        大堆:Python没有内置包支持大堆,
应用场景:前k个值的题目
"""

from heapq import heapify, heappush, heappop, nlargest, nsmallest

a = [1, 2, 3]
# 1. 小堆
heapify(a)
print(a)
# 2. 添加
heappush(a, 4)
#  [1, 2, 3, 4] 头永远是是最小的值,后面不确定
print(a)
# 3. 删除
heappop(a)
print(a)
# 4. nlargest()
print(nlargest(2, a))
# 5. nsmallest()
print(nsmallest(2, a))

print("=" * 10)
# 1. 大堆
a2 = [1, 2, 3]
print(a)
a2 = [-i for i in a2]
print(a)
heapify(a2)
print(a2)
# 2. heappush()
j = 4
heappush(a2, -1 * j)
print(a2)
# 43. heappush()
print(heappop(a2) * -1)
print(a2)

结果

C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe D:/code/datastruct/caozuo/demo06_heap.py
[1, 2, 3]
[1, 2, 3, 4]
[2, 4, 3]
[4, 3]
[2, 3]
==========
[2, 4, 3]
[2, 4, 3]
[-3, -2, -1]
[-4, -3, -1, -2]
4
[-3, -2, -1]

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值