所有
在找到给定代码/算法的复杂性时,我总是发现自己很怀疑。实施例
FOR I=1 TO N
do J=1
WHILE J*J < I
do J=J+1
上述代码的时间复杂度为Big Theta (N^(3/2))
。但是,我不明白答案是如何得出的。
有人可以指导我找到可以帮助我的复杂性或任何特定资源的步骤吗?大多数情况下,我只找到复杂度为N, lg N , N lg N
和N^2
答案 0 :(得分:2)
方法总是一样的:根据 N 计算出正在执行的操作数量,然后丢弃低阶项和常量。
所以在上面的例子中,内部循环迭代大约 sqrt(I)次,所以我们有(大约) sqrt(1) + sqrt( 2) + sqrt(3) + ...结果是一个函数,其最高项为 N ^(3/2)。