java - 算法的时间复杂度

标签 java eclipse algorithm oop

我创建了两种算法来计算给定数组的前缀平均值。我想推导出这两种算法的时间复杂度,但我一直在努力。我看了这个 YouTube 视频: https://www.youtube.com/watch?v=udwxWq9wZgg&safe=active .我不明白如何计算 for 循环和嵌套 for 循环中的操作数。

在 2 点 27 分,我成功地统计了 PrefixAverages2 中 for 循环中的操作。是 3n+1。但是,从 5:50 开始我就听不懂了。

提前致谢。

public double[] PrefixAverages1(double input[])
{
    double A[] = new double[input.length];
    double s;


    for(int i=0; i <= input.length - 1 ;i++)
    {
        s = input[0];

        for(int j=1; j <= i ;j++)
        {
            s = s + input[j];
        }

        A[i] = s / (i+1);
    }


    return A;  

}





public double[] PrefixAverages2(double input[])
{
    double A[] = new double[input.length];
    double s = 0;

    for( int i=0; i <= input.length - 1 ; i++)
    {
        s = s + input[i];
        A[i] = s / (i+1);

    }

    return A;  

}

最佳答案

   for(int i=0; i <= input.length - 1 ;i++)
        for(int j=1; j <= i ;j++)

这是二次方的,对于给定的 i,内部循环大约进行 i 次,所以你必须对 i 求和,所以基本上你有类似 sum_{i=1}^{i=l} i 的东西,它是前 l 个整数的和,即 l(l+1)/2,然后是二次方。

对于第二种算法,您只有一个循环,因此它的复杂度是线性的。

关于java - 算法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157023/

相关文章:

java - 从 Line2D 值添加多边形点

java - eclipse : Crap4j and other intelligent code quality analyzers

android - 等待 Crashlytics - 在 Android Eclipse 中

C++ 代码:: block 大括号样式

algorithm - 为运行时间为 O(k(|V|+|E|)) 的单源最短路径问题设计一个算法

java - 可以使用 Coldfusion 创建 JSR 286 portlet 吗?

java - 如何在java中从H2数据库映射id列

algorithm - git 中的 "Did you mean"

java - HttpServletRequest 对象的字段会延迟截断。为什么?

algorithm - 如何显示所有找零的方法