如何通过具有算法效率的 Big'O Notation 导出解决方案?

How to derived solution by Big'O Notation with Algorithm Efficiency?

我得到了这个算法,我被告知用 Big'O Notation 提供它的效率并解释推导。 我曾尝试研究 Big'O Notation 和算法效率,但仍然无法解决以下问题。这些是给出的算法:

i= 100

loop( i > 10)

    num = 1;

    loop( num < = 1000)

         num = i*num

    end loop

    i= i /2;

end loop

我希望任何人都可以帮助我解决这个问题,这是一个练习而不是家庭作业。 谢谢你。

请注意,此代码每次总是做完全相同的事情 - 您无法更改任何输入以使其 运行 持续更长或更短的时间。结果,时间复杂度为 O(1),因为 运行时间与输入的大小无关。

如果 i - N 的初始值,这里是 100,并且 num - M 的最大允许值是输入,那么答案是 log(N)*log(M)

因此,外部循环将执行 log(N, 2) 次。内循环将执行 log(M, current_value_of_i) 次。

编辑:回答 SilverArcher 的评论。 在外循环的一次迭代中,内循环不能执行超过 log(1000,11) 次。