【发布时间】:2021-09-21 05:07:21
【问题描述】:
我是 O 表示法的新手,我正在尝试从这些给定的界限中使用大 O 表示法确定最坏情况运行时间的最严格界限:
- O(1)
- O(log n)
- O(n)
- O(n log n)
- O(n**2)
- O(n**3)
- O(2**n) 作为实践,我在所有代码的注释中添加了最严格的界限,但我无法确定哪些情况将与抽象列表函数一起使用。例如,我在下面有两个简单的代码来求和:
例子:
def sums1(L):
even = list(filter(lambda x: x%2==0, L))
odd = list(filter(lambda x: x%2==1, L))
return even + odd
def susm2(L):
if L == []:
return 0
s1 = sum(L)
s2 = sums2(L[1:])
s3 = sums2(L[2:])
return s1+s2+s3
根据我的理解,第一个代码将运行 O(n^2) 次,因为添加了两个抽象列表,第二个将运行 O(2^n)。但是,我在网上找不到任何类似的代码来看看我是否正确,所以我想我会在这里问。非常感谢任何关于运行多少次的指导。 :D
【问题讨论】:
标签: python-3.x algorithm runtime big-o computer-science