确定函数的运行时:

时间:2019-02-18 14:46:17

标签: java runtime

public static void p2(int N) { 
  for (int i = 0; i < N; i += 1) { 
    for (int j = 1; j < N; j = j * 2) {  
        System.out.println("hi !"); 
    } 
  } 
}

您能帮我确定此功能的运行时间吗?

我试图为N的不同输入找到某种模式。我计算了最多5个输入的成本(为此使用了println):

N:0、1、2、3、4、5

C(N):0、0、2、6、8、15

其中C(N)是成本函数。

但是,我不知道下一步如何进行!答案是Θ(N log(N))

1 个答案:

答案 0 :(得分:4)

内部循环将执行lg n次。 您可以通过查看将N除以2以获得1的次数来理解这一点? (即,内部循环要执行多少次?)答案是lg n。 并且外部循环将运行N次。因此,对于i的每次迭代,内部循环将运行lg n次。这意味着嵌套循环将准确运行n(lgn)次,这是此问题的时间复杂度。