【发布时间】:2015-05-28 02:33:19
【问题描述】:
给了我一个算法,估计时间复杂度 T(n) 为 3*n! + 2。
我知道n = 10时算法运行所需的时间是1秒,我想计算n = 20时的运行时间。
我对如何处理这个问题有点困惑。我假设从 n=10 开始我只是将它插入 T(n),得到 3*(10!) + 2,这显然不是 1(秒)。
任何人都可以就如何正确处理这个问题提供一些提示吗?谢谢!
【问题讨论】:
-
(3*10!+2)/k = 1。(3*20!+2)/k = x。求解x。然后意识到这只是一个估计,唯一确定的方法就是测量。 -
@MarkRansom 感谢您的回复。我假设我应该在第一个方程中求解 k,然后将其代入方程 2 并求解 x?
-
如果时间复杂度是O(3*n!),那么对于n = 20,需要数年才能完成。
-
@PhamTrung 是对的。 670,442,449,629 秒 - 大约是 21,259 年...
-
谢谢大家的帮助!
标签: algorithm time runtime big-o time-complexity