包含IndexedPriorityQueue和简单PriorityQueue的PrioryQueue库

pyqueues的Python项目详细描述


pyqueues系统

包含索引优先级队列和简单优先级队列的优先级队列库。在

——安装:

使用克隆此存储库, https://github.com/abecus/Queue.git

或者,使用pip安装, pip install pyqueues

适用于python3.x和PyPy。在

概述

索引优先级队列和队列都被实现为最小二进制堆,以将其用作最大堆,或使用自定义键将值作为元组传递到堆中,例如(key,value)。时间的复杂性是

  • peek最高优先级元素:O(1)

  • pop最高优先级元素:O(logn)

  • 推送新元素:O(logn)

另外,对于索引优先级队列

  • 按键查找任何项:O(1)

  • 按键删除元素:O(logn)

  • 按键更新元素:O(logn)

使用

	from pyqueues.indexedPriorityQueue import IndexedPriorityQueue
	from pyqueues.heap import heapify, heapPop, heapPush
  • 要修复列表(不更改原始列表,而是在内部修复)

    ^{pr2}$ 在
  • 要将项目推送到优先级队列中

      pq.push(2)
      pq.push(-1)
    
  • 使用key更新项(我们可以使用dict通过将值映射到优先级队列的arrSize arrtibute来跟踪值的键)

      pq.update(pq.arrSize-1, 100)    # updates -1 to 100
      pq.update(pq.arrSize-2, -1)     # updates 2 to -1
    

“同样地使用pq.递减键()和pq.增加键我们知道更新方法所需的时间的一半(当我们知道更新方法所需的一半时)

  • 要从优先级队列中删除值

      pq.remove(pq.arrSize-1)    # removes 100
    
  • 要弹出最高优先级元素

      pq.pop()        # pops -1
    

许可证


麻省理工学院执照

版权所有(c)2020 abecus

兹免费准许任何人取得复制品 本软件及其相关文档文件(“软件”)的 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的使用者 根据以下条件提供:

上述版权声明和本许可声明应包括在所有 软件的副本或大部分。在

本软件按“原样”提供,无任何形式的保证,明示或 包括但不限于适销性保证, 特定目的的适用性和非侵犯性。在任何情况下 作者或版权持有人应对任何索赔、损害赔偿或其他 无论是在合同诉讼、侵权诉讼或其他诉讼中,由以下原因引起的责任:, 与软件、软件的使用或其他交易有关 软件。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过标记名检索多个标记中的元素以进行selenium自动化测试   java iText如何查找最后一行被拆分到下一页   java如何在hudson中的特定jdk上运行Findbugs和PMD?   如何确保java程序与java Environment 6兼容?   对形状进行分组,这样我就可以通过鼠标点击和java处理循环浏览它们   使用生成器映射对象时,java定义无效   maven Java:Struts2和IntelliJ供初学者使用   java子类不继承父类字段   java Android Grid View在Android版本kitkat上崩溃   java Hibernate从缓存返回错误的列表,即使预期的列表与缓存的列表不同   java SendGrid:模板和替换标记   用于普通生产者| Kafka流的java自定义分区器   安卓理解Java内部类中的作用域   无法从Android Studio中的非静态方法调用java非静态方法   比较两个XML响应的JavaXMLUnit   java使用keytool列出密钥   不使用Java客户端库将视频上传到YouTube数据API v3   java My While循环即使在满足条件时也不会结束   自动在外部存储字符串数据,以便以后在Java中使用