查找嵌套循环的时间复杂度
Find time complexity of a nested loop
对于下面的循环,
int sum = 0;
for (int i = 1; i < N; i *= 2)
for (int j = 0; j < N; j++)
sum++;
时间复杂度是多少,我应该怎么想?我的猜测是外循环总共运行 log(N)
。内部循环运行 N
次。所以时间复杂度应该是Nlog(N)
.
我说得对吗?
提前致谢。
对于第一个循环,迭代次数等于log2(N)
,因为i
每次迭代都会加倍。
对于第一个循环的每次迭代,第二个循环运行 N
次。
因此总体时间复杂度=(log2(N) * N)
,其中函数log2(x)=log(x)以2为底。
对于下面的循环,
int sum = 0;
for (int i = 1; i < N; i *= 2)
for (int j = 0; j < N; j++)
sum++;
时间复杂度是多少,我应该怎么想?我的猜测是外循环总共运行 log(N)
。内部循环运行 N
次。所以时间复杂度应该是Nlog(N)
.
我说得对吗?
提前致谢。
对于第一个循环,迭代次数等于log2(N)
,因为i
每次迭代都会加倍。
对于第一个循环的每次迭代,第二个循环运行 N
次。
因此总体时间复杂度=(log2(N) * N)
,其中函数log2(x)=log(x)以2为底。