python 单链表 快速排序_python sortedcontainers-Python实现的快速排序算法集合

介绍

Sorted Containers是Apache2许可的Sorted Collections库,用纯Python编写,并且可以像C扩展一样快速。

Python的标准库已经非常实用了,实践已经证明,即使没有一个扩展,您也可以真正走得很远。但是,当您真正需要排序列表、排序字典或排序集合时,您将面临许多不同的实现,其中大多数使用C扩展,而且没有完善的文档和基准测试。

在Python中,我们可以做得更好。我们可以用纯Python做到这一点!>>>fromsortedcontainersimportSortedList>>>sl=SortedList(['e','a','c','d','b'])>>>slSortedList(['a','b','c','d','e'])>>>sl*=10_000_000>>>sl.count('c')10000000>>>sl[-3:]['e','e','e']>>>fromsortedcontainersimportSortedDict>>>sd=SortedDict({'c':3,'a':1,'b':2})>>>sdSortedDict({'a':1,'b':2,'c':3})>>>sd.popitem(index=-1)('c',3)>>>fromsortedcontainersimportSortedSet>>>ss=SortedSet('abracadabra')>>>ssSortedSet(['a','b','c','d','r'])>>>ss.bisect_left('c')2

上面显示的所有操作都比线性时间快。上面的演示还占用了将近1 GB的内存。当排序列表乘以一千万时,它将存储对“ a”到“ e”中的每一个的一千万个引用。每个引用在已排序的容器中需要八个字节。这是很难克服的,因为这是指向每个对象的指针的代价。与每个节点还必须存储两个指向子节点的指针的典型二叉树实现(例如,Red-Black Tree, AVL-Tree, AA-Tree, Splay-Tree, Treap等)相比,开销也减少了66%。

Sorted Containers将所有工作从Python分类集合中剔除-简化了Python的部署和使用。无需安装C编译器或预先构建和分发自定义扩展。性能是一项功能,测试具有100%的单元测试覆盖率和数小时的压力。

特点

纯Python

完善的文档

基准比较(替代方案,运行时,负载因子)

100%的测试覆盖率

压力测试时间

性能很重要(通常比C实现更快)

兼容的API(几乎与旧的blist和bintrees模块相同)

功能丰富(例如,按排序的字典获取五个最大的键:d.keys()[-5:])

实用的设计(例如SortedSet是具有SortedList索引的Python集)

在Python 3.7上开发

在CPython 2.7、3.2、3.3、3.4、3.5、3.6、3.7和PyPy,PyPy3上测试

快速开始

通过pip快速安装Sorted Containers:$pipinstallsortedcontainers

您也可以下载我们备份的网盘版库文件包:download sortedcontainers

文档资料

有关sortedcontainers的完整文档,请访问 www.grantjenks.com/docs/sortedcontainers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值