如何解决大O符号的定义
我是一位经验丰富的程序员,了解Big O表示法(常量,线性,logN,NlogN,多项式等)。我可以分析算法并发现它们的复杂性。但是我不是计算机科学工程师。一切都是自学成才。
今天,我正在查阅Sedgewick的书,其中有关于算法分析的章节。这就是他定义Big O算法的方式
如果存在常数,则称函数g(N)为O(f(N)) c o 和N o ,使得g(N)小于 所有N> N o
的c o f(N)
我一点也不明白。我需要了解什么才能理解这一点?
解决方法
用非常简单的术语来说,这意味着您的函数需要25 * n + 17个CPU周期或任何这种形式的时间,可以说是O(n)。我们只关心方程中增长最快的部分(这就是N> N0位的含义:对于足够大的N值,我们可以说25 * n + 17
这使我们可以将O(n ^ 3 + 7 * n ^ 2 + 5 log n + 17)简化为简单的O(n ^ 3),这要短得多,并且仍然传达了我们需要知道的所有信息,因为对于大的n,所有其他部分都可以忽略不计。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。