需要帮助找到Big Oh,c和No

时间:2015-10-12 23:14:23

标签: python big-o notation

需要这两个例子的帮助。因为我有点理解大喔,但不是真正的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. 任何帮助/解释将是一个巨大的帮助,我感到迷茫。我应该得到它,但很清楚,我没有。感谢

1 个答案:

答案 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)因为它是主导因素。你需要尝试为你的代码片段做同样的事情。