具有哈希表查找的四层嵌套循环的大theta

时间:2013-10-22 11:59:00

标签: algorithm hashtable big-o big-theta

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中出现什么?

3 个答案:

答案 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表示法:

enter image description here

实际上,最里面循环内的指令将执行 625 次。