2017-06-14 88 views
0

我需要帮助计算代码片段时间复杂度的步骤数。计算代码步骤数(时间复杂度)

total = 0 
    i = 0 
while i<3: 
    j=0 
    while j<3: 
     total = total + 1 
     j = j+1 
    i = i+1 
return total 

我有解决方案说明:2 + 3 *(2 + 3 * 3 + 2)2 = 43

从顶部的前两行,其中总= 0且i = 0,是的,我知道他们每个人都是1个时间步,因此总共给了我2个。对于while语句,我不确定它是如何获得的,但是因为我的3步时间?然后j = 0是1个时间步长。

现在,这里是我不明白的地方。如果存在嵌套的i和j循环,我如何确定时间复杂度?在解决方案中,我注意到有*(多个),如果有人可以用简单的术语来分解我,我会很感激。

回答

1

时间复杂性需要一个参数。例如,O(n^2)。因为它的写法,我不知道你的函数的哪个部分会改变,所以它只是不变的,O(1)。

让我们说i相比,在这种情况下,3是可以改变的。就像你的功能是“每个我做三次j”。在这种情况下,你会看到如果你增加了这个变量,你会在循环中增加三个步骤。这意味着复杂性看起来像O(3n)。由于我们可以删除常数倍数,所以它只是O(n)。

虽然我刚刚写的是假设的。这取决于你的功能有什么不同。