算法练习。选举时间计算

时间:2015-10-31 11:10:28

标签: algorithm time execution

我有这个练习:

Test (int n)
  if(n<=81) then return 1
  k=1
  h=1
  while(k<=n)
    for j=1 to k do
      c++
    k=k+2
  return 9*h + Test(n/3)

我必须在最坏的情况下计算执行时间。我有点困惑,因为在类似的练习中:

Exercise(int n)
  c=1
  m=n*n
  while(m>1) do
    for j=1 to m do
      c++
    m=m/2
  if(n>1) then Exercise(n/2)

执行时间是(n ^ 2)因为m从n ^ 2开始并且每次被除以2所以n ^ 2/2 ^ i = 1

其中i是迭代。

在第一次练习时,我得到k = k + 2,所以每次迭代都加2。

n + 2 * i = 1 - &gt; I = N / 2

所以执行时间是

n/2
∑ n+2*i = (n^2)
i=0

我认为是正确的,但有些事情告诉我,我应该考虑最后一行return 9*h + Test(n/3)

0 个答案:

没有答案