我被要求确定此循环的大O符号。
<form>
现在我看到这是一个嵌套循环。但这绝对不是N ^ 2,对吗? 我理解是什么使得O(n)或O(log(n)),但我将如何确定一个特定的循环,例如这个?
答案 0 :(得分:4)
内部循环从 n 运行到 0 ,因此它是 O(n) 。
外圈
while (x < (n*n)) {
...
x = 2*x;
}
是对数的,从 1 运行到 n * n ,这将是 O(log(n 2 ) ))= O(2 log n)= O(log n) 。
由于循环是嵌套的,因此您可以将复杂性乘以 O(n log n) 。