如何查找特定程序的运行时间?

时间:2014-01-23 18:06:27

标签: algorithm runtime big-o time-complexity procedure

对于以下每个程序,让T(n)为运行时间。找到T(n)的顺序 (即,找到f(n)使得T(n)∈(f(n))。

程序Fum(int n):

for i from 1 to n do    
 y ← 1/i
 x ← i
 while x > 0 do    
  x ← x − y 
 end while
end for

我知道如何找到简单函数的运行时间,但由于这是一个嵌套循环,其中内循环依赖于外循环中的变量,我遇到了麻烦。

2 个答案:

答案 0 :(得分:1)

对于这种情况,它应该是 1+4+9+...+n^2 = n(n+1)(2n+1)/6 ,或者只是 O(n^3)

对于for - 循环中的每个步骤,它将为i^2运行while次。给定x=i;y=1/i;i^2 x=y*i^2x次到达x<=0的时间为{1}}。

对于x=x-y,它将是i,总结起来,你会得到1,2,...,n

答案 1 :(得分:0)

首先,让我们考虑内部循环的运行时: 我们想知道内循环运行的次数,就i而言。 也就是说,我们想要在x-f(i)y = 0中求解f(i)。如果我们在x = i中,并且y = 1 / i,则得到f(i)= i ^ 2。

我们知道外部循环将正好运行n次,因此,我们得到内部循环运行的总次数:

= 1 + 4 + 9 + ... + n ^ 2

此总和等于n(n + 1)(2n + 1)/ 6, O(n ^ 3)