【问题标题】:How to calculate Big-O? [closed]如何计算大O? [关闭]
【发布时间】:2018-01-06 00:25:34
【问题描述】:
public long seriesLoop() {
    long answer = a;        
    for (long i = 1; i < n; i++) {          
        long delta = a;             
        for (long j = 0; j < i; j++) {
            delta *= r;             
        }           
        answer += delta;        
    }       
    return answer;  
}

public long seriesClosedForm() {
    return (long) (a * (1 - Math.pow(r, n)) / (1 - r));     
}

这两种方法的 Big-O 表示法是什么? 为什么?我们如何计算算法的大 O?

【问题讨论】:

  • 我投票结束这个问题,因为这是作业转储。
  • 你根据循环计算大O。一个循环 = O(n)。嵌套循环 = O(n^2)
  • @j.pei 请阅读此 stackoverflow thread。这会让你对大 O 有一个清晰的认识。
  • O(...) 是最坏的情况。每个循环给出 n 的因子。

标签: java algorithm big-o


【解决方案1】:

对于第一种方法,它是 n*n = n^2。由于有两个循环,对于每个循环 O(n) 是 n,因为您正在遍历数组中的每个项目。

第二个是常数o(1)。

【讨论】:

  • 是的,这是我的答案。但是我的导师说第一个应该是O(n),而第二个实际上不是O(1),它是O(log n)。我不知道为什么..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
相关资源
最近更新 更多