繁体   English   中英

哪种算法时间复杂度更好?

[英]which algorithm is better time complexity?

我读到有关Big-O符号的信息。 我了解一些主意,但是当比较两种算法时,我说他现有的两种算法后我不明白。

 First f2(n) = 2n + 20 steps. 
second f3(n) = n + 1 steps.
he write f2 = O(f3):

    f2(n)/f3(n)
    =((2n + 20)/(n + 1))<= 20;
   he say Certainly f3 is better than f2?, of course f3 = O(f2), this time with c = 1.

我认为f3比f2更好,因为因素较少。 我的问题

1)为什么常数c = 1他如何选择它? 2)为什么f3 = O(f2)以及为什么f2 = O(f3)?

这些都是线性函数,所以都是O(n) ,并且彼此都是O f3渐近地比f2快20倍。 所有这些事情同时都是真实的。

Patrick87的答案进一步说明了Big-O表示法的渐近性质。 我将向您展示更多对此的分析。 让我们更仔细地研究f2f3

首先, f2(n) :我们知道f2(n) = O(2n + 20) 20是一个常数,因此我们可以忽略它。 因此, f2(n) = O(2n + 20) = O(2n) 同样,2是一个常数,因此我们也可以忽略它,因此: f2(n) = O(2n + 20) = O(2n) = O(n)

该分析的意思是,随着n增加, 2n + 20的函数的增长与2n的函数的增长一样快,而2n的函数的增长与作为n的函数一样快。 如果您考虑一下,这是有道理的:所有这些功能都是平行线。 他们的增长率是相同的。

现在f3(n) :我们知道f3(n) = O(n + 1) 1是一个常数,因此我们可以忽略它。 因此, f3(n) = O(n)

这就是为什么f3f2都是O(n) 这并不意味着对于给定的n值,这些函数花费的时间完全相同 ,或者f2在时钟时间上与f3一样快。 这仅意味着两个函数的复杂性 (即完成工作所需的时间)以与n增加相同的速率增加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM