Python的bisect如何工作?

时间:2013-11-27 23:44:29

标签: python

我读过Python的列表是使用指针实现的。然后我看到这个模块http://docs.python.org/2/library/bisect.html可以有效地插入到排序列表中。它如何有效地做到这一点?如果列表是使用指针而不是通过连续数组实现的,那么如何有效地搜索插入点呢?如果列表是通过连续数组支持的,那么在插入元素时必须进行元素移位。那么bisect如何有效地工作呢?

2 个答案:

答案 0 :(得分:1)

我相信列表的元素是指向的,但“列表”实际上是一个连续的数组(在C中)。它们被称为列表,但它们不是链接列表。

实际上,在排序列表中查找元素非常好 - 它是O(logn)。但插入并不是那么好 - 它是O(n)。

如果您需要登录数据结构,最好使用treap或红黑树。

答案 1 :(得分:0)

这是有效的搜索,而不是实际的插入。快速搜索使整个操作“增加一个值并保持所有值按顺序”比较,例如,追加然后再次排序:O(n)而不是O(n log n)