我是一名学生并且学习时间复杂性。我陷入了下面的问题。我已经搜索过它,但找不到任何相关内容。任何人都可以弄清楚下面算法的时间复杂度,或者只是让我知道在哪里找到答案。
1: procedure MysteryAlg(x , n)
2: if n = 0 then
3: return 1
4: end if
5: if n = 1 then
6: return x
7: end if
8: if n is even then
9: return MysteryAlg(x * x, n/2)
10: else
11: return MysteryAlg(x * x, n/2) * x
12: end if
13: end procedure
谢谢。
答案 0 :(得分:1)
您编写的算法命名为"通过平方"指数排序。您可以从此处获取更多信息:https://en.wikipedia.org/wiki/Exponentiation_by_squaring
查看标题为" 基本方法"
的部分需要O(log2(n))操作。因此,您可以将其视为算法的复杂性。