对于以下问题,您如何找到以 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))
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))