python软堆实现

softheap的Python项目详细描述


python中的软堆

这个库是bernard chazelle的软堆的完整python实现[1]。

软堆是一种类似堆的数据结构,它为所有堆操作提供一个常量运行时,但insert除外。然而,为了维护这个看似不可能的运行时,一些数据被“损坏”。其结果是insert takes o(log 1/e),其中e是损坏率。

[1]http://www.cs.cmu.edu/afs/cs/academic/class/15859-f05/www/documents/p1012-chazelle.pdf

使用量

要开始,请导入模块。我们还将为这个示例导入random。

from softheap import *
import random

软堆需要一个输入,即错误率r。堆中损坏的节点数与r成反比。

s = SoftHeap(2)

我们可以通过在堆中随机插入100个元素来测试堆。

arr = list(range(100))
random.shuffle(arr)

for a in arr:
  s.insert(a)
当我们重复删除时,输出将被近似排序。

output = []

for b in range(len(arr))
  output.append(s.deletemin())

print(output)

这需要O(N log 1/E)时间。

安装

使用pip安装软堆。通过命令行:

pip install softheap

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

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求