我错过了介绍big-O的类(class),因为认为这很简单。但是,当n变得非常小时,老师似乎仍然对O(n)偏离函数有什么看法?我在书的任何地方都找不到。有人可以启发我吗?如果有重要意义,我们对O(n)的探索已在排序算法的背景下进行。
谢谢
基因
编辑:
感谢您的帮助,它一直在照亮。我有一个后续问题。是否有一种相对简单的数学方法来找出n对于O(n)而言太小的点?
Related questions
are there any O(1/n) algorithms?
What is the difference between Θ(n) and O(n)?
最佳答案
Big O不会描述函数的执行时间,而只是描述增长。所有函数都具有一定的常数因子或开销,需要添加。当n低时,此开销会使该算法的任何改进都相形见--一种算法(每次操作需要50ms,但是具有O(n),对于较小的n而言,性能会更差)而不是每次操作需要5 ms,但具有O(n * n)的算法。
这就是为什么通常对于小集合来说大O无关紧要的原因。对于大多数具有简单比较的对象,对10个项目的快速排序显然不会比气泡式排序快,对100个项目的线性搜索可能比二叉树更快,依此类推。
关于当n的值变得非常小时,会变成Big-O吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842242/