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