【发布时间】:2015-06-03 11:49:28
【问题描述】:
如果我的程序的时间复杂度是,比如说O(n^2),我该如何表达 对于较大的 n,10^6 值,运行时间以秒为单位?
我需要对此进行粗略估计才能知道是否需要优化或者我可以 继续我的代码....时间限制是 0.6 秒
问题不是关于时间复杂度的计算......而是关于从时间复杂度中估计运行时间
【问题讨论】:
-
无法使用大 O 表示法估算执行时间
-
@rsd_unleashed 你应该执行并测量时间并优化
-
大 O 表示法告诉您代码如何扩展,而不是需要多长时间。也就是说,一个 O(n^2) 算法将花费 4 倍的时间来完成一个 n 是两倍大的问题。它没有告诉您任何关于给定 n 需要多长时间的信息,因为涉及的其他因素太多。除了创建一个测试用例并自己测量之外,没有办法确定需要多长时间。
-
复杂度是根据程序的操作或步骤来定义的。 step 和 step (以及整个程序)可能需要完成的实际秒数之间没有关系(加起来,BigO 忽略 constants 和低阶 步骤)。实际执行取决于许多因素,例如 CPU 速度、CPU 内核数量、程序的性质(例如 IO 密集型或 CPU 密集型)。
标签: algorithm big-o time-complexity