【问题标题】:Find the CN and time Complexity查找 CN 和时间复杂度
【发布时间】:2015-11-01 10:25:33
【问题描述】:

通过我对复发的研究,我试图解决这种复发 你能帮我查一下吗

public static int java(int N) {
  if (N == 1) 
    return 1; 
  return (java(N/2) + java(N/2)); 
}

我认为这是等式

C(1) = 1
CN = 2CN/2 + 1

复杂度为 O(log N)

你能帮我看看吗

【问题讨论】:

  • 这看起来不错且正确。
  • @Am_I_Helpful 你能告诉我你从哪里得到的n
  • @Mira - 现在,我不受我控制。不知道我怎么了,对不起。它必须是 O(log n)。
  • @YoungHobbit - 见我上面的评论。顺便说一句,也赞成你的答案。
  • @Am_I_Helpful 不用担心,非常感谢您的帮助和快速回复:)

标签: algorithm asymptotic-complexity recurrence


【解决方案1】:
public static int java(int N) {
  if (N == 1) 
    return 1; 
  return 2 * java(N/2); 
}

不用两次调用相同的,只需将其乘以 2。对于相同的输入,无需再次计算。

复杂度是O(log N),因为您每次都将问题除以2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-17
    • 2012-08-14
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多