以下是伪代码:
pow2(a,b,k)
d := a, e := b, s := 1
until e = 0
if e is odd s:=s·d modk
d:=d2 modk
e := ⌊e/2⌋
return s
end
- 循环运行的时间是:log b(base 2),因为这是b = e在被舍入为0之前可以减半的次数
- b的输入大小是log b
- 根据以上所有信息,我对时间复杂度的计算如下:
O(log(log b))(基数2)
简化后如O(2 ^ b)
我知道我不正确,因为这个算法是有效的,所以时间复杂度应该更好。
- 此算法的实际时间复杂度为输入大小b的O(n)wrt。
- 请解释如何根据上述所有信息确定时间复杂度O(n)。