我对大O表示法的某些方面有些困惑。我提前为这个复杂的例子道歉比较不同输入的运行时间/减少大O幅度和不同功能的输入
如果一个函数ex。 O(2^N) + O(N^7)
; N输入值被认为是相同的,并且O(N^7)
将主导O(2^N)
或者大O幅度可以减少到O(N^7)
。 O(2^N) * O(N^7)
也是如此; O(N^7)
将主导,因为N(或输入)的值被认为是相同的,并且运行时间比O(2^N)
更差。一个函数需要有两个输入值,这些值可以用一个函数来表示为O(2^N) + O(M^7)
,并且输入O(2^N)的运行时间将支配O(M^7)。那是对的吗?
这里是我也混在一起的地方。现在,如果我们比较两个函数,一个函数的运行时间为O(N^7)
,函数的运行时间为O(2^N)
。 N或输入被认为是相同的,并且功能2^N
运行时间会比N^7
更差?我们应该假设N是一样的,除非明确表明他们与我们不同。换句话说,大O比较两个(为了简单起见,我使用两个)输入(N)的缩放值,并且为了比较,必须考虑相同的N
。我的理解是否正确。
任何帮助将不胜感激或链接到一个重复的帖子,因为我确信这个问题之前已被问过。我无法在堆栈溢出中找到它。
感谢上帝您的回答。我正在阅读一家公司的在线博客,该公司为软件工程师提供技术教育服务,并阅读他们对大O的解释。我认为他们的解释毫无意义,因为他们写道,这个O(N^7)会增长得更快比O(2^N)。我没有接受过正规教育,我发现那里有很多不好的资源。我认为他们是正确的,因为他们提供cs教育服务,这是一个笑话公司。感谢您解决这个问题。 –