当前位置: 首页 > news >正文

python优先队列使用

heapq 是 Python 的一个内置模块,提供了堆队列算法的实现,也称为优先队列算法。以下是关于 heapq 模块的详细使用说明。

基本概念

  • :一种特殊的二叉树结构,满足父节点总是小于或等于其子节点(最小堆)
  • 特性
    • 堆是一个完全二叉树
    • 堆中每个节点的值都小于或等于其子节点的值(最小堆)
    • 根节点总是堆中的最小元素

1. 添加元素

heap = []
heapq.heappush(heap, 5)    # 添加元素
heapq.heappush(heap, 3)
heapq.heappush(heap, 7)
heapq.heappush(heap, 1)
print(heap)  # 输出可能是 [1, 3, 7, 5]

2. 弹出最小元素

smallest = heapq.heappop(heap)
print(smallest)  # 输出 1
print(heap)      # 输出可能是 [3, 5, 7]

3. 查看最小元素(不弹出)

smallest = heap[0]
print(smallest)  # 输出 3

4. 合并堆

heap1 = [1, 3, 5]
heap2 = [2, 4, 6]
merged = list(heapq.merge(heap1, heap2))  # 返回一个迭代器
print(list(merged))  # 输出 [1, 2, 3, 4, 5, 6]
http://www.dtcms.com/a/267338.html

相关文章:

  • 基于spark的奥运会奖牌变化数据分析
  • mysql的备份与恢复(使用mysqldump)
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 爬虫-web请求全过程
  • 数据结构:数组:二分查找(Binary Search)
  • C#使用开源框架NetronLight绘制流程图
  • Hinge×亚矩云手机:以“深度连接”为名,重构云端社交的“真实感”
  • AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
  • Jedis 原生之道:Redis 命令 Java 实现指南(二)
  • SpringAI与智能体入门
  • 探索 Ubuntu 上 MongoDB 的安装过程
  • NX二次开发常用函数——获取边对应的面 UF_MODL_ask_edge_faces
  • 使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
  • 电脑休眠设置
  • 【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南
  • springboot中使用线程池
  • 【Elasticsearch】检索排序 分页
  • 20. 有效的括号
  • BUUCTF在线评测-练习场-WebCTF习题[网鼎杯 2020 青龙组]AreUSerialz1-flag获取、解析
  • 【Flask】flask中get方法和post方法区别
  • CMake基础:条件判断详解
  • openai和chatgpt什么关系
  • 单用户模式、紧急模式、救援模式有什么区别
  • 动手学深度学习-学习笔记【二】(基础知识)
  • 若 VSCode 添加到文件夹内右键菜单中显示(通过reg文件方式)
  • 在 Windows 上安装和运行 Apache Kafka
  • Android Input 系列专题【事件的读取与分发】
  • 在SSM+vue项目中上传表单数据和文件
  • android开发中的 AndroidX 版本的查看 及 constraintLayout的简单用法
  • 【性能优化】程序性能优化:疏通胜于堵塞