与使用不同的参数和时间的方法大O符号

问题描述 投票:-1回答:2

什么是时间复杂度,如果美国联邦航空局()采用线性时间,

for(int j = 0 ; j < n ; j++)
    faa(k)

要么

for(int j = 0 ; j < n ;j++)
    faa(j)

从我了解到,我们使用大O符号和时间复杂度是通过观察发现ñ所以无论循环会为O(n),这将在下一行再乘以这将给予我们的答案,两者的时间复杂度的问题。将答案仅仅是O(KN)和O(JN)还是我失去了什么?根据我的书,它说,美国联邦航空局()采用线性时间,当它呼吁参数联邦航空局(K),大O是O(K),这样将J值相同?

java
2个回答
1
投票
  1. 随着faa(k):结果是O(n)作为faa做是在固定时间n次(j没有涉及,所以O(kn)O(n)为k不改变)
  2. 随着faa(j):结果是O(n^2)作为线性计算完成n次,每次一个人去j但由于j推移近似n我们说,直到n每次, 这是更好地理解说这是二次

1
投票

根据我的书,它说,美国联邦航空局()采用线性时间,当它呼吁参数联邦航空局(K),大O是O(K),这样将J值相同?

for(int j = 0 ; j < n ; j++)
    faa(k)

鉴于k faa(k)的大O是O(k),它会被执行n倍的输入,这是完全可以接受的说,对于这种情况下,大O的复杂性是O(k*n)

我不同意azro。即使kn是独立的,没有迹象表明k是恒定的,而相反。

他们都是可变的,输入的算法复杂度的计算非常重要的。

for(int j = 0 ; j < n ;j++)
    faa(j)

这是非常相似faa(k)

j平均值来n/2,所以这将是执行n * (n/2)时间,这可以简化为O(N^2)

无论哪种方式,这似乎达到了二次行为。所以你不会丢失的。

© www.soinside.com 2019 - 2024. All rights reserved.