运行时间用O和Theta表示

时间:2012-09-04 02:34:33

标签: java complexity-theory

对于给定的代码(我之前只使用了一个问题),使用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");
    }
}
}

2 个答案:

答案 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的时间。