gpt4 book ai didi

python - 为什么 heappop 时间复杂度在 python 中是 O(logn) (不是 O(n))?

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:16 24 4
gpt4 key购买 nike

对于列表,heappop 会弹出最前面的元素。从列表的前面删除一个元素的时间复杂度为 O(n)。我错过了什么吗?

最佳答案

heappop() 重新排列列表中的 log(n) 元素,这样它就不必移动每个元素。

这很容易看出:

>>> from random import randrange
>>> from heapq import heapify, heappop
>>> h = [randrange(1000) for i in range(15)]
>>> heapify(h)
>>> h
[80, 126, 248, 336, 335, 413, 595, 405, 470, 592, 540, 566, 484, 970, 963]
>>> heappop(h)
80
>>> h
[126, 335, 248, 336, 540, 413, 595, 405, 470, 592, 963, 566, 484, 970]
>>> # ^----^---------^----^----^----^----^---------^----^----^--- elements that didn't move

请注意,弹出操作并没有移动大部分元素(例如 248 在 heappop 之前和之后的相同位置)。

关于python - 为什么 heappop 时间复杂度在 python 中是 O(logn) (不是 O(n))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com