(在任何人说什么之前是的,这是功课,但我已经把它转了回去,我只是想明白这个问题。)
问题在于计算代码片段的执行时间和大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。
如果有人能解释我将如何得到答案,我将不胜感激。
答案 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
的总和。