执行时间和大O.

时间:2012-04-03 21:22:10

标签: java algorithm big-o analysis execution

(在任何人说什么之前是的,这是功课,但我已经把它转了回去,我只是想明白这个问题。)

问题在于计算代码片段的执行时间和大O.我可以计算出大的O,但我不知道如何确定执行时间。好吧基本上我不明白的是如何计算执行时间

for(i=0; i < n; i++){
    SomeJavaStatment;
    for(j=0; j < 2 * n; J+= 2){ 
        SomeJavaStatment;
        SomeJavaStatment;
}
}

正确答案是Big O(n ^ 2)我说得对,但我不知道执行时间是什么,正确的答案是4n ^ 2 + 5n + 2。

如果有人能解释我将如何得到答案,我将不胜感激。

2 个答案:

答案 0 :(得分:7)

我不认为,执行时间应该确定,但是:

 //assignment to i takes 1 operation    
 for(i=0; i < n; i++){ // i++ is executed n times, i < n is executed (n+1) times
    SomeJavaStatment; // n times

    //assignment to j takes 1 operation
    for(j=0; j < 2 * n; j+= 2){  // j+=2 is executed n*n times, j < 2*n is executed n*(n+1) times
        SomeJavaStatment; // n * n times
        SomeJavaStatment; // n * n times
    }
 }

总共给出1 + n +(n + 1)+ n + n +(n * n)+(n + 1)* n +(n * n)+(n * n)= {{1 }):)

答案 1 :(得分:0)

Big O描述了函数的上界。你的函数不仅是Big O(n ^ 2),而且它也有紧密的边界(对于n的任何给定值,该函数具有完全相同的运行时)。您可以手动计算完全紧束缚,或者您可以将其表示为4n^2+5n+2的总和。