对于给定的代码(我之前只使用了一个问题),使用O表示法的运行时间为O(n ^ 2)。如果我想用Theta表示法来表达运行时间,它会是一样的吗?意思是Theta(n ^ 2)?
for(int i=0; i<N; i++){
for(int j=1; j<N; j++){
System.out.println("Yayyyy");
if(i<=j){
System.out.println("Yayyy not");
}
}
}
答案 0 :(得分:0)
实质上:
Big O-notation用于运行时间的UPPER边界。这意味着大多数算法都有几个大的O-bounds(例如,您的算法是O(n^23)
,因为它比theta(n^23)
算法更有效)
Theta-notation用于紧密限制。并非所有算法都有明确定义的紧束缚,因为这意味着它与其他函数成比例增长。在你的例子中,因为如果没有打印“Yayyy not”,算法就无法完成
(n ^ 2 - n)/ 2次,它将永远不会超过这个次数,它将始终与n ^ 2成比例增长,因此有一个theta(n^2)
的界限!
答案 1 :(得分:0)
为了使这个简短且可口,BigO(n ^ 2)意味着您的算法不会花费超过~n ^ 2的时间。 BigTheta(n ^ 2)意味着你的算法不会花费超过~n ^ 2的时间,和它不会花费少于~n ^ 2的时间。