如何通过具有算法效率的 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)
次。
我得到了这个算法,我被告知用 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)
次。