【问题标题】:Deciding a Big-O notation for an algorithm确定算法的大 O 表示法
【发布时间】:2014-08-30 15:04:34
【问题描述】:

我对我的作业有疑问。 我需要确定以下算法的 Big-O 特征:

我猜问题 1 的答案是 O(n),问题 2 的答案是 O(log n),但我有点困惑 如何陈述原因。我的回答正确吗?你能解释一下为什么会这样刻画吗?

【问题讨论】:

  • 我很确定您必须确定这一点。无论您的决定如何,算法的 Big-O 性能就是这样
  • 你的猜测很正确,Q1很简单,对于Q2-尝试搜索二分查找复杂度!
  • Stackoverflow 不是让别人做作业的地方!如果您有某个特定问题,您已经努力解决但无法解决,如果您可以将您的问题表述为问题,我们会提供帮助。
  • 我建议在你的课堂上组建一个学习小组......并与你的教授交谈......

标签: java algorithm data-structures big-o


【解决方案1】:

问题 1:O(n) 因为它以常数 (1) 递增。
第一个循环O(n) 第二个循环也是O(n)
总计O(n) + O(n) = O(n)

问题 2:O(lg n) 这是二分查找。

它是O(lg n),因为每次问题都会减半。

如果数组在第一秒的大小为n,则为n/2,那么n/4 ..... 1

n/2^i = 1 => n = 2^i => i = log(n).

【讨论】:

    【解决方案2】:

    是的,你的答案是对的。第一个很简单。 2 独立 for 循环。如此有效地O(n)

    第二个实际上很棘手。您实际上是将输入大小除以 2(一半),这将有效地导致时间复杂度为 O(log n)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      相关资源
      最近更新 更多