有人可以帮我理解如何找到以下循环的时间复杂度:
for (int j = 1 to n) {
k = j;
while (k < n) {
sum += a[k] * b[k];
k += log n;
}
}
我在这里找到了解决方案,即 n 2 / log(n)。
很明显,外循环需要 n 次,但对于内循环,我被卡住了。n / log n 因子从何而来?
我试图逐个学期地遵循它,但无法继续
1st time k = 1,
2nd time k = 1 + log n
3rd time k = 1 + log n + log n // (2 log n)
stuck here :(
我怎样才能找到一种模式,或者我应该遵循哪些最佳步骤来获得此类代码的时间复杂度?