对于以下问题,您如何找到以 theta 表示的时间复杂度?

How do you find the time complexity in terms of theta for the following question?

Question from my university exam, 2020

上面的link有我详细提到的问题(是图片)

你可以写一个等式来计算循环迭代次数:

2 * 1 + 2 * 2 + ... + 2 * k = n

k表示循环的迭代次数到j <= n。 因此,

2 (1 + 2 +... +k) = n => 2 (k(k+1)/2) = n 
=> k(k+1) = n => k = Theta(sqrt(n))

因此,假设其他操作在Theta(1)中,算法的总时间复杂度在Theta(sqrt(n))

好吧,首先我们假设 for 循环将执行 k 次然后看到第 k 条指令中 j 的值是 j = 2(1) + 2(2) + 2(3) + .. ..... + 2(k) j = k^2 + k 但是你知道 j <= n 所以解决它你会得到 k <= (-1 + root( 1 + 4n )) /2

所以你可以同样它的时间复杂度为 O(root(n))