大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,所有其他部分都可以忽略不计。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...