如何计算大O? [关闭]

Posted

技术标签:

【中文标题】如何计算大O? [关闭]【英文标题】:How to calculate Big-O? [closed] 【发布时间】: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 请阅读此 *** thread。这会让你对大 O 有一个清晰的认识。 O(...) 是最坏的情况。每个循环给出 n 的因子。 【参考方案1】:

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

第二个是常数o(1)。

【讨论】:

是的,这是我的答案。但是我的导师说第一个应该是O(n),而第二个实际上不是O(1),它是O(log n)。我不知道为什么..

以上是关于如何计算大O? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

所有javascript数组和对象方法的大O [关闭]

无法在 RStudio 中处理大文件 [关闭]

如何关闭wps热点,如何关闭wpscenter,如何关闭我的wps

如何将 DateTimeOffset ToString("o") 偏移量设置为 00 [关闭]

如何下载 o 在本机反应中所做的应用程序? [关闭]

英文字母的drawContours功能[关闭]