for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 5; l++) {
look up in a perfect constant time hash table
}
}
}
}
这将是什么运动时间在大theta?
我最好的猜测,在黑暗中拍摄:我总是看到嵌套的for循环是O(n ^ k)其中k是循环的数量,所以循环将是O(n ^ 4),然后我会乘以O(1)恒定时间?什么会在大theta中出现什么?
答案 0 :(得分:2)
如果你认为访问哈希表真的是theta(1),那么这个算法也会在theta(1)中运行,因为它只在哈希表中进行常数(5 ^ 4)查找。
但是,如果将5更改为n,则它将是theta(n ^ 4),因为您将完成n ^ 4个常数时间操作。
答案 1 :(得分:1)
big-theta的运行时间为Θ(n^4)
。
Big-O是一个上限,其中大-theta是一个紧密的界限。这意味着代码O(n^5)
也是正确的(但Θ(n^5)
不是),大O内部的任何东西都必须渐近地大于或等于n^4
我假设5
可以替换另一个值(即n
),否则,循环将在恒定时间内运行(O(1)
和Θ(1)
),因为5^4
是常数。
答案 2 :(得分:0)
使用Sigma表示法:
实际上,最里面循环内的指令将执行 625 次。