Algorithm 如何找到特定过程的运行时间?
对于下面的每个过程,让T(n)为运行时间。求T(n)的阶 (即,找到f(n),使得T(n)∈ (f(n)) 程序Fum(int n):Algorithm 如何找到特定过程的运行时间?,algorithm,runtime,big-o,time-complexity,procedure,Algorithm,Runtime,Big O,Time Complexity,Procedure,对于下面的每个过程,让T(n)为运行时间。求T(n)的阶 (即,找到f(n),使得T(n)∈ (f(n)) 程序Fum(int n): 我知道如何找到简单函数的运行时间,但由于这是一个嵌套循环,其中内循环依赖于外循环的变量,所以我遇到了麻烦。在这种情况下,它应该是1+4+9+…+n^2=n(n+1)(2n+1)/6O(n^3) < > < 中的每一步,对于循环,< > > > x=i;y=1/i;< /代码>,将采用 i ^ 2 < /代码>(如 x=y*i ^ 2 >时间> x >代
我知道如何找到简单函数的运行时间,但由于这是一个嵌套循环,其中内循环依赖于外循环的变量,所以我遇到了麻烦。在这种情况下,它应该是
1+4+9+…+n^2=n(n+1)(2n+1)/6
O(n^3)
< > < <代码>中的每一步,对于循环,< <代码> > <代码> > <代码> > x=i;y=1/i;< /代码>,将采用<代码> i ^ 2 < /代码>(如<代码> x=y*i ^ 2 <代码> >时间> <代码> x >代码>首先到达<代码> x,让我们考虑内部循环的运行时间: 我们想计算出内部循环运行了多少次,以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)谢谢,你能告诉我你是怎么得出这个答案的吗?不,
1+4+9+…=n(n+1)(2n+1)/6
,不是n^2
。
for i from 1 to n do
y ← 1/i
x ← i
while x > 0 do
x ← x − y
end while
end for