算法平均案例时间复杂度

时间:2015-03-05 07:08:14

标签: java algorithm time-complexity

如果具有O(n 2 )平均时间复杂度的算法需要10秒才能执行1000个元素的输入大小,那么当输入大小为10,000个元素时,运行需要多长时间?

2 个答案:

答案 0 :(得分:5)

无法回答..任何实际提供号码的人都是错的。因为时间复杂度是底层机器架构的独立。这就是为什么我们忽略 机器相关的常量。

每个平台都有自己执行某些操作的开销。所以,答案是无法说出

答案 1 :(得分:2)

虽然在适用于所有计算机时无法提供特定数字,但您可以估算O(n^2) <{1}}

增加10倍时,n应为100倍左右。

这有两个重要的资格

  • 所花费的时间可能比这少得多,因为第一次测试可能包括大量的热身。即你可能会发现只需要两倍的时间。这将是令人惊讶的,但它是可能的。在Java中,温度是短测试中的一个重要因素,如果再次运行,10K的测试花费的时间要少得多,这种情况并不少见。实际上,多次运行10K的测试开始显示的时间比1K运行一次快(并且JIT启动,尤其是代码很容易优化)
  • 所花费的时间可能要高得多,尤其是在达到某个资源阈值时。例如假设1000个元素适合缓存,但10000个元素适合主内存。类似地,1000可以适合内存,但必须从磁盘分页10000。这可能会导致花费更长时间。