Time complexity 循环中函数为*的函数的时间复杂度
您能帮我找出以下函数的复杂性吗:Time complexity 循环中函数为*的函数的时间复杂度,time-complexity,Time Complexity,您能帮我找出以下函数的复杂性吗: proc (int n) { for (i=0 ; i<n ; i++) { x = g(n)+f(n) ; for (j=0 ; j<n ; j++) { y=h(j)*g(j) ; } } return x+y ; } proc(int n) { 对于(i=0;x=O的ibigo(n^2) y的大O=O(n对数(n)) 现在要计算整个算法的大O,我们必须看最里面的循环,在这种情况下,最里面的循环
proc (int n)
{
for (i=0 ; i<n ; i++)
{
x = g(n)+f(n) ;
for (j=0 ; j<n ; j++)
{
y=h(j)*g(j) ;
}
}
return x+y ;
}
proc(int n)
{
对于(i=0;x=O的ibigo(n^2)
y的大O=O(n对数(n))
现在要计算整个算法的大O,我们必须看最里面的循环,在这种情况下,最里面的循环包含在y=h(j)*g(j)中。
大O可以从最低值开始计算,然后向上计算。
x的大O将被相加而不是相乘,因为它与内部for循环处于同一级别
Big O = O(n log(n)) * O(n) * O(n) + O(n^2)
It can be written as:
Big O = O ((n log(n) * n * n) + (n * n^2))
Big O = O((n^3 log(n) + n^3)
Neglecting smaller terms would give us:
Big O = O(n^3 log(n))
大O=O(n对数(n))*O(n)*O(n)+O(n^2)
它可以写成:
大O=O((n对数(n)*n*n)+(n*n^2))
大O=O((n^3对数(n)+n^3)
忽略较小的条款将使我们:
大O=O(n^3 log(n))内部循环的复杂性(h*g的和)
)
由于h(j)=Θ(log(j))
和g(j)=O(j)
,因此h(j).g(j)
的复杂性是O(j.log(j))
,即0。因此,内环产生
K.(1.log(1) + 2.log(2) + ... + (n-1).log(n-1))
<= K'.n^2.log(n)
K.(1.log(1)+2.log(2)+…+(n-1.log(n-1))
欢迎来到StackOverflow!一定要带上并访问。我认为这个问题更适合。你可能想在那里搜索一下。
K.(1.log(1) + 2.log(2) + ... + (n-1).log(n-1))
<= K'.n^2.log(n)