以下代码片段的时间复杂度是多少 - 假设x是一个全局变量,而“statement”需要O(n)时间?

时间:2017-12-18 20:47:33

标签: recursion time-complexity

recurssion 以下代码片段的时间复杂度是多少 - 假设x是一个全局变量,而“statement”需要O(n)时间?

2 个答案:

答案 0 :(得分:2)

假设n = 64。

  • 调用1(n = 64):语句+ A(n / 2)= O(n)+ O(A(n / 2))
  • 调用2(n / 2 = 32):语句+ A(n / 4)= O(n)+ O(A(n / 4))
  • 调用3(n / 4 = 16):语句+ A(n / 8)= O(n)+ O(A(n / 8))
  • 调用4(n / 8 = 8):语句+ A(n / 16)= O(n)+ O(A(n / 16))
  • 调用5(n / 16 = 4):语句+ A(n / 32)= O(n)+ O(A(n / 32))
  • 调用6(n / 32 = 2):语句+ A(n / 64)= O(n)+ O(A(n / 64))
  • 致电7(n / 64 = 1):O(1)

复杂性= O(n)[陈述] x log(n)[递归]

结论:O(n.log(n))

答案 1 :(得分:1)

8 * A(n / 2)是数字乘法,需要O(1)时间。 所以上述函数的递归关系是 A(n)= A(n / 2)+ O(n) 用主人定理解决这个问题我们得到 A(n)=θ(n)