【发布时间】:2019-10-27 21:29:50
【问题描述】:
我正在使用内置 bisect 模块对二进制搜索值使用排序列表,该模块的查找时间为 O(log n)。 bisect 的文档指出,使用insort() 插入会在列表中占主导地位的插入时间为 O(n) 的总时间。它的删除时间也是 O(n)。
有没有办法使用一个列表并让 O(log n) 插入、删除和查找?我可以使用像红黑树这样的平衡二叉搜索树 (BST) 来做到这一点吗?哪个 Python3 模块具有具有这些属性的数据结构?
注意:我看到 PyPI 上有一个包含 RBTree 和 AVLTree 的包 bintrees,但它已被废弃,并且它们的文档指向使用 sortedcontainers 库。就我所见,sortedcontainers 没有这些树可供使用(它们是用 C 编写的,是 SortedList、SortedDict 和 SortedSet 的基础)。
【问题讨论】:
标签: python-3.x list data-structures time-complexity binary-search-tree