我正在学习如何使用本书自己分析算法(前5章):Introduction of Algorithms。假设我有以下简单的算法(我做了):
for i <- 0 to 100
for j <- 1 to 2000
if (i*10 + j*20 = n)
c <- c+1
现在,如果我想估算此算法对特定输入大小的运行时间,请说n= 500
,我会说:
最坏情况下的运行时间为T(n) = 100*2000*500 = 10 * 10^7
。但是,当我想概括任何输入大小,即n
时,我不知道如何做到这一点!那么,有人可以启发我吗?
谢谢
答案 0 :(得分:1)
您当前的运行时间是错误的。由于您始终遍历所有i
和j
值,因此总共需要100*2000
次迭代。这与您的n
值无关。但是,如果您认为未知数分别是最大i
和j
值,分别由I
和J
表示,则可以说您的算法的运行时间为{{1} }。您已经走上了正确的轨道,只需将常量替换为变量。