什么是时间复杂度,如果美国联邦航空局()采用线性时间,
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值相同?
faa(k)
:结果是O(n)
作为faa
做是在固定时间n
次(j
没有涉及,所以O(kn)
去O(n)
为k不改变)faa(j)
:结果是O(n^2)
作为线性计算完成n
次,每次一个人去j
但由于j
推移近似n
我们说,直到n
每次,
这是更好地理解说这是二次根据我的书,它说,美国联邦航空局()采用线性时间,当它呼吁参数联邦航空局(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。即使k
和n
是独立的,没有迹象表明k
是恒定的,而相反。
他们都是可变的,输入的算法复杂度的计算非常重要的。
for(int j = 0 ; j < n ;j++)
faa(j)
这是非常相似faa(k)
。
j
平均值来n/2
,所以这将是执行n * (n/2)
时间,这可以简化为O(N^2)
。
无论哪种方式,这似乎达到了二次行为。所以你不会丢失的。