数据结构-堆

目录

heapq

导入

初始化

插入元素

返回最小值

PriorityQueue

导入

初始化

入队

出队


堆是一颗树,其每个节点都有一个值,且(小根堆:每个父节点都小于等于其子节点

(在进树时不断进行比较

STL中的 priority_queue 其实就是一个大根堆

python中可以用 heapq(小根堆) 和 PriorityQueue (大根堆)

heapq

heapq默认是小根堆,如果想实现大根堆的话得负负得正

导入

python 复制代码
import heapq

初始化

python 复制代码
heap=[]

或者从列表转化而来

python 复制代码
heapq.heapify(列表名)

那么后面堆名就是列表名

插入元素

python 复制代码
heapq.heappush(堆名,插入元素值)

返回最小值

python 复制代码
heapq.heappop(堆名)

PriorityQueue

在这PQ里我们需要自己设置优先级,一般情况下就是元素值等于优先级值

从不是标准库的deque导入

注意⚠️:PriorityQueue得从不是标准库的deque导入

python 复制代码
from deque import PriorityQueue

初始化

python 复制代码
pq=PriorityQueue()

入队

python 复制代码
pq.put([优先级,元素值])

出队

取出优先级最高的(小根堆的话也是负负得正

python 复制代码
pq.get()
相关推荐
XiaoFan01213 分钟前
将有向工作流图转为结构树的实现
java·数据结构·决策树
睡一觉就好了。25 分钟前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
齐落山大勇29 分钟前
数据结构——单链表
数据结构
皮皮哎哟1 小时前
深入浅出双向链表与Linux内核链表 附数组链表核心区别解析
c语言·数据结构·内核链表·双向链表·循环链表·数组和链表的区别
wWYy.2 小时前
指针与引用区别
数据结构
历程里程碑2 小时前
Linux 17 程序地址空间
linux·运维·服务器·开发语言·数据结构·笔记·排序算法
-dzk-3 小时前
【代码随想录】LC 203.移除链表元素
c语言·数据结构·c++·算法·链表
齐落山大勇3 小时前
数据结构——栈与队列
数据结构
毅炼3 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
404未精通的狗3 小时前
(数据结构)二叉树(上)
数据结构