如何找到任何算法的大O /时间复杂度

时间:2011-02-08 23:56:01

标签: algorithm complexity-theory

所有

在找到给定代码/算法的复杂性时,我总是发现自己很怀疑。实施例

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 NN^2

的代码

1 个答案:

答案 0 :(得分:2)

方法总是一样的:根据 N 计算出正在执行的操作数量,然后丢弃低阶项和常量。

所以在上面的例子中,内部循环迭代大约 sqrt(I)次,所以我们有(大约) sqrt(1) + sqrt( 2) + sqrt(3) + ...结果是一个函数,其最高项为 N ^(3/2)。