python sortedcontainers-Python实现的快速排序算法集合

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

介绍

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

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

在Python中,我们可以做得更好。我们可以用纯Python做到这一点!
1.jpg

上面显示的所有操作都比线性时间快。上面的演示还占用了将近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:

$ pip install sortedcontainers

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

download sortedcontainers

文档资料

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

相关文章
|
3天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
34 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
1天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
10 5
|
30天前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
16 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
15天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
14天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
14天前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
76 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
16天前
|
算法 数据处理 数据安全/隐私保护
|
23天前
|
存储 索引 Python
五:《Python基础语法汇总》— 列表&元组&集合
本篇文章讲解了关于列表;元组和集合这三个基本数据类型的常用方法与函数。及同一性操作符;成员判断符;浅拷贝与深拷贝等多方面的知识点
21 4
|
27天前
|
算法 数据处理 Python
Python中的集合的运算
Python中的集合的运算
|
30天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。