以下代码的时间复杂度是多少? 我计算它像 n²log(n)
int x = 0;
for (int i = 0; i < N; i++)
for (int j = 0; j < N/2; j++)
for (int k = 1; k < N;)
{
x++;
k *= 2;
}
return x;
答案 0 :(得分:0)
你说得对!
第一次循环执行的次数 = N。
second 循环执行的次数 = N/2。
第三 循环执行的次数 = log2(N)。
因此,时间复杂度 = O(N * (N/2) * log2(N)) = O((N^2)/2 * log2(N)).
在忽略 N 的最高次幂的常数后,时间复杂度 = O((N^2) * log2(N)).