for(i: 1 to n^2)
x = x + 1;
return x + 1;
N是输入的数量。 N> 1且倾向于无穷大
我知道最差(也是最好)的案例运行时间是n^2 + 1
。因此,它将是O(n^2)
。但是,我如何找到它是否是一个紧张的大O表达式?我们如何找到一个紧张的大O表达?那是什么?
答案 0 :(得分:0)
让你的函数为f(n)
你已经知道最好的情况是n ^ 2(因为忽略了输入的常量,所以忽略+1)。
更正式:Ω(n ^ 2) - >意味着你可以找到函数u(n)和常数k,使得k * u(n)< = f(n)就复杂性而言。
正如你所说,最坏的情况也是n ^ 2。 正式:O(n ^ 2) - >意味着你可以找到函数v(n)和常数k,使得k * v(n)> = f(n)就复杂性而言。
由于Ω和O是函数集,因此Theta被定义为Ω和O的交点。“Theta是上限和下限。”
交点是n ^ 2 - > Theta(n ^ 2)
以描述性方式:
f(n)增长不比u(n)快得多(或等于)。 f(n)的增长速度不比v(n)快得多(或等于)。 - > f(n)的增长与n ^ 2
完全相同请记住,经常Ω和O是不同类别的函数的集合。
E.g。 Ω(log n)(在树中搜索)和O(n)(在字符串中搜索)处理这种情况时,您无法指定精确的Theta值。