- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如Python文档所说,我认为bisect模块比列表内置方法、索引和插入要快得多,以将项目插入到长有序列表中。因此,我只是测量了 bisect_func()
和 insert_func()
这两个函数的时间消耗,如下代码所示。
bisect_func()
得分为 1.27 秒,insert_func()
得分为 1.38 秒,时间差异并不大。我的问题是,在这个例子中我是否错过了一些测试二等分效率的东西?或者 bisect 不是将项目插入有序列表的唯一有效方法?
import bisect
HAYSTACK = [n for n in range(100000000)]
NEEDLES = [0, 10, 30, 400, 700, 1000, 1100, 2200, 3600, 32000, 999999]
def bisect_func():
for needle in reversed(NEEDLES):
bisect.insort(HAYSTACK, needle)
def insert_func():
for needle in reversed(NEEDLES):
position = HAYSTACK.index(needle)
HAYSTACK.insert(position, needle)
if __name__ == '__main__':
import time
start = time.time()
# bisect_func()
insert_func()
end = time.time()
print(end - start)
最佳答案
来自 insort 的文档:
Insert x in a in sorted order. This is equivalent to a.insert(bisect.bisect_left(a, x, lo, hi), x) assuming that a is already sorted. Keep in mind that the O(log n) search is dominated by the slow O(n) insertion step.
重要的部分是:请记住,O(log n) 搜索主要由缓慢的 O(n) 插入步骤主导。因此两种方法都是 O(n) 最后,这就是为什么它们的效率相似,insort
稍好一些。
关于python - bisect.insort函数与list.index和insert函数的速度比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735065/
据我所知,Python中的list是用数组实现的,而deque是用双链表实现的。在任何一种情况下,对某个值的二进制搜索都需要 O(logn) 时间,但是如果我们插入到该位置,则数组需要 O(n),而双
试图在 python3 中为我必须开发的 frotier 问题找到最佳数据结构,我刚刚意识到使用模块 bisect 来实现一个真正的问题的复杂性按时间排序的插入不是 O(nlog n),而是呈指数增长
这个 python 模块是计算一个有序的插入数据结构还是先插入然后排序?自从开发了一种算法以来,我一直在 python 中与这种事情作斗争,在这种算法中我必须牢记内存问题,因此需要一种方法来在正确的位
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
在 sortedContainers 中指定 SortedList.add 具有大约 O(log(n)) 的时间复杂度,但我们可以看到它在源代码,O(n): def add(self, val
我想像 insorts 和 feedly news 应用那样实现动画。我找到了快速版本通过自定义uicollectionview布局实现。 这是链接 Depth Page transform on i
我是一名优秀的程序员,十分优秀!