理解Big-O表示法

时间:2014-08-25 21:19:26

标签: algorithm big-o

我正在读一本Simon Harris和James Ross的书“Beginning Algorithms”。

在早期的页面中,有一节关于理解Big-O表示法。我读了这一节,重读这一节可能大约十几次。我仍然无法绕过一些事情。我感谢任何帮助摆脱困惑。

作者/作者声明“准确的操作次数实际上并不重要。算法的复杂性通常根据执行功能所需的操作次数的数量级来定义,用资本表示O表示顺序,后跟表示相对于字母N表示的问题大小的某种增长的表达式。“

这真让我头疼,不幸的是,这一段之后的其他一切对我来说都没有意义,因为这一段应该为下一次阅读奠定基础。

这本书没有定义“数量级”。我用Google搜索了结果,结果只是告诉我,数量级是以10的幂定义的。但这甚至意味着什么呢?您是否采用操作次数并以10的幂定义该数字,这等于复杂性?还有什么被认为是“问题的大小?”问题的大小是否为操作次数?或者问题的大小是“执行功能所需的操作次数的数量级。”

任何实际的例子和对此的正确解释都会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

保持简单!

只需将Big-O视为表达algorythm性能的一种方式。这种表现将取决于algorythm handeling = n的元素数量。

一个例子,当你必须总和时。第一次添加需要一个语句,第二次添加需要一个语句,依此类推......所以性能与元素数量的线性关系= O(n)。

想象一下,这是一种非常聪明的algorythm,对于每个句柄元素,它会自动缩短下一个元素的排序。这将是对数,元素数量= O(log(n))。

或带参数的复杂公式,以及每个额外参数,执行时间相乘。这将是指数= O(10 ^ n)。