gpt4 book ai didi

python - 检查元组成员资格的时间复杂度是多少?

转载 作者:行者123 更新时间:2023-12-02 05:05:00 25 4
gpt4 key购买 nike

此处列出了检查字典、列表和集合中的成员资格(data_struction 中的 x)的时间复杂度: http://wiki.python.org/moin/TimeComplexity

  • 字典 - O(1)
  • 列表 - O(n)
  • 设置 - O(1)

但是,我在任何 Python 文档中都找不到元组。我尝试了以下代码来检查自己:

import time 

l = list(range(10000000))
t = tuple(range(10000000))
s = set(range(10000000))

start = time.perf_counter()
-1 in s
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in set is: ", e)

start = time.perf_counter()
-1 in l
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in list is: ", e)


start = time.perf_counter()
-1 in t
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in tuple is: ", e)

我得到这样的东西:

Time spent in set is:  2.0000000000575113e-06
Time spent in list is: 0.07841469999999995
Time spent in tuple is: 0.07896940000000008

这告诉我它也是 O(n) 。谁能证实这一点吗?有官方文件证实这一点吗?

最佳答案

将元组视为“卡住列表”。元组与列表一样,必须逐项搜索才能查找对象是否是该元组的成员。

成员资格测试的复杂性与列表的复杂性相同:O(n)。

字典和集合的复杂度是 O(1) 的原因是条目是通过哈希算法访问的。

关于python - 检查元组成员资格的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60568734/

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