需要这两个例子的帮助。因为我有点理解大喔,但不是真正的c和No概念。第一个似乎很直接。我很确定Big Oh会是O(n ^ 3),但我不确定。
f(x)= 2n3 + 5n + 2
下一个真的让我感觉像是在做我正在做的事。
def analyze(alist):
1 exchanges = True
2 passnum = len(alist)-1
3 while passnum > 0 and exchanges:
4 exchanges = False
5 for i in range(passnum):
6 if alist[i]>alist[i+1]:
7 exchanges = True
8 alist[i],alist[i+1]=alist[i+1],alist[i]
9 passnum = passnum-1
他希望我标记关于Big Oh(什么?)的每一行,然后计算Big Oh,c和No. 任何帮助/解释将是一个巨大的帮助,我感到迷茫。我应该得到它,但很清楚,我没有。感谢
答案 0 :(得分:0)
每一行代表一个基本操作或一个函数。
基本操作通常被认为需要O(1)时间(恒定时间)。
如果我有这个简单的代码而且我看起来相对于N的大哦,参数中给出的数字
a = 1 // O(1) assignement is constant
b = a + 2 // O(1) addition is constant
for (a=0 to N-1) // a will take value between [0..n-1], which is n different values
a = a + 1 // addition is O(1)
//resume: i have => O(1) + O(1) + N * O(1) => O(N)
在这里你看到我确实标记了每一行,我可以得出结论,这段代码是O(N)因为它是主导因素。你需要尝试为你的代码片段做同样的事情。