计算运行时间

时间:2018-12-11 02:28:23

标签: runtime complexity-theory discrete-mathematics

我一直无法解决以下问题,但是我不确定如何从那里开始:

以下程序多少次打印出“ Hi”?也就是说,运行时间是多少? (以Big-O表示法)

int i = 1;
int j = 1;
while(i <= n )
{
    j+= j;
   int k = 1;
   while (k <= j)
    {
       System.out.println("Hi");
       k = k +1;
    }
    i = i + 1;
}

我能够推断出该程序将产生x = 1到n (2 ^ x)个Hi数量的求和。这也是运行时间吗?还是我应该将代码分解为两个求和,其中一个从i = 1到n,另一个是....(我不知道)。谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的运行时总和看起来正确。那么问题是如何简化它。幸运的是,我们有这个事实:

  

2 0 + 2 1 + 2 2 + ... + 2 n-1 = 2 n -1。

忽略将这个总和替换为总和的所有错误,由于big-O表示法,我们可以这样做,我们看到“ Hello!”被打印出Θ(2 n )次。

答案 1 :(得分:0)

然后您可以尝试这样

    int i = 1;
    int j = 1;
    long startTime = System.nanoTime();
    while(i <= n )
    {
        j+= j;
       int k = 1;
       while (k <= j)
        {
           System.out.println("Hi");
           k = k +1;
        }
        i = i + 1;
    }
    long endTime = System.nanoTime();
    System.out.println("time taken in nano seconds" + endTime-startTime);