When would it be worth it to use a worse Big-O algorithm
本问题已经有最佳答案,请猛点这里访问。
如果有不同时间复杂度的算法可供选择,那么何时更值得选择"更糟"的大O,例如选择
当我们的代码使用有限数量的操作时,big o意味着极限,无穷多的操作(因此big o是一个近似值)。比较两种时间复杂性:
1 2 | t ~ 1e100 * N t ~ N * N |
第二种算法(具有更差的-
复杂性并不能告诉你任何关于性能的信息,所以不足以知道复杂性来决定一种方法是否比另一种方法更有价值。要知道一种方法在给定的情况下是否比另一种方法更好(即对于给定的问题大小),基准测试是一种方法。一旦你确定了不同的方法,复杂度可以帮助你预测当问题增长时,事情会如何变化。
了解算法的复杂性在图像处理中非常有用,例如:
假设您有两个不同的过滤器,在二维图像上产生非常相似的结果,一个比另一个更快的"正常"图像(例如,百万像素)。如果你将它们应用于3D图像,它们的行为会怎样(例如,如果问题的大小是千兆像素呢)?了解复杂性并有一个参考基准可以帮助您预测什么样的过滤器是"值得"使用的,但最终…您仍然需要对这两个解决方案进行基准测试以确保这一点。
任何渐进式表示法,都描述了某个算法在达到一定大小的输入(
例如,计算复杂度为
这也适用于