首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >算法的时间复杂度:如何在计算时间后决定哪一种算法

算法的时间复杂度:如何在计算时间后决定哪一种算法
EN

Stack Overflow用户
提问于 2012-05-11 07:02:14
回答 5查看 1.8K关注 0票数 0

今天,我在msdn中看到了博客,我注意到了如何计算算法的时间复杂度。我完全理解如何计算算法的时间复杂度,但在最后,作者提到了以下几行

把我得到的一切加起来 (N+4)+(5N+2)+(4N+2) = 10N+8 因此,上述算法的渐近时间复杂度为O(N),这意味着上述算法是线性时间复杂度算法。

为什么说它是基于线性时间复杂度算法的呢?博客的链接

http://blogs.msdn.com/b/nmallick/archive/2010/03/30/how-to-calculate-time-complexity-for-a-given-algorithm.aspx

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-11 07:08:49

他说,因为10N +8是一个线性方程。如果你画出这个方程,你就会得到一条直线。试着在这个网站上输入10 * x + 8 (函数图),自己看看。

票数 7
EN

Stack Overflow用户

发布于 2012-05-11 07:12:13

作者只是根据自己的经验选择最合适的。您应该知道,计数算法的复杂性几乎总是意味着找到一个大欧函数,它反过来只是给定函数的上界(在您的例子中是10N+8)。

已知的复杂性类型只有几种:线性复杂度、二次复杂度、.因此,计算时间复杂度的最后一步是选择不太复杂的类型(我的意思是,线性比二次复杂,二次不那么复杂,指数等)可以用于给定的函数,从而正确地描述其复杂性。

在您的例子中,O(n)和O(n^2)甚至O(2^n)确实是的正确答案。但是,在大字号定义中最适合的不太复杂的函数是O(n),这是这里的一个答案。

这是一个真好文章,充分解释了大噢符号.

票数 0
EN

Stack Overflow用户

发布于 2012-05-11 07:14:08

时间复杂性的上升顺序(常见的)

代码语言:javascript
运行
复制
O(1) - Constant
O(log n) - logarithmic
O(n) - linear
O(n log n) - loglinear
O(n^2) - quadratic

注:n无界增加

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10546888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档