算法时间复杂度示例

时间:2014-11-21 11:42:03

标签: time complexity-theory time-complexity

我最近了解Big Oh表示法。我最近遇到了书中给出的例子。

void Function(int n)
{
int i=1 ;
int s=1 ;
while( s <= n)
{
i++ ;
s= s+i ;
print(\*");
}
}

我不知道作者如何得到上述算法的时间复杂度为O(√n)。我只是想了解得出这个结论的过程?

1 个答案:

答案 0 :(得分:2)

可以很容易地将其视为s is growing quadratic in terms of number of iteration

s = 1 // set as 1 initially 现在我们要添加S = s + i // Where i increasing linearly by one unit in each iteration

//So it's just a addition i.e. s = 1 + 2 + 3 +4 ....+i, which will sum up to s = i(i+1)/2 因此s = i(i+1)/2 = (i^2+i)/2其中i是迭代次数。

现在,在i次迭代中,我们得到s = (i^2+i)/2 要获得s >=n,我们只需要√n次迭代。 因此,给定程序的时间复杂度为O(√n)