首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java前缀平均值/数组帮助

Java前缀平均值/数组帮助
EN

Stack Overflow用户
提问于 2011-02-28 08:45:00
回答 1查看 1.7K关注 0票数 0

我正在尝试将两种不同的算法转换成Java代码,以便对它们进行测试;第一种算法(PrefixAverages1)是:

代码语言:javascript
运行
复制
For i = 0 to n-1
    Let s = X[0]
    For j = 1 to i
        Let s = s + X[j]
    End For
    Let A[i] = s / (i + 1)
End For

输出:一个由n个元素组成的数字数组A,使得Ai是元素X,X1,...,Xi的平均值。

这是我为PrefixAverages1想出的Java翻译:

代码语言:javascript
运行
复制
import java.util.Arrays;

public class PrefixAverages1 {

static double array[] = new double[10];

public static void prefixAverages(){

    for (int i = 0; i < 10; i++){

        double s = array[i];

            for (int j = 0; j < 10; j++){

                s = s + array[j];
            }

        array[i] = s / (i + 1);

        System.out.println(Arrays.toString(array));
    }

}

public static void main(String[] args){
    prefixAverages();
}

}

第二种算法(PrefixAverages2)是:

代码语言:javascript
运行
复制
Let s = X[0]
For i = 0 to n-1
    Let s = s + X[i]
    Let A[i] = s / (i + 1)
End For

输出:一个由n个元素组成的数字数组A,使得Ai是元素X,X1,...,Xi的平均值。

这是我为PrefixAverages2想出的Java翻译:

代码语言:javascript
运行
复制
import java.util.Arrays;

public class PrefixAverages2 {

static double array[] = new double[10];

public static void prefixAverages(){

        double s = 0;

        for (int i = 0; i < 10; i++){
                s = s + array[i];
                array[i] = s / (i + 1);
        }
            array[0] = 10;

        System.out.println(Arrays.toString(array));
}

public static void main(String[] args){
    prefixAverages();
}

}

我正在尝试测试算法,但不太确定从哪里开始。我正在尝试建立一个数组,然后通过手动遍历n的小值来对其应用这些算法。

我应该从哪里/如何开始向数组添加元素?

我还试图通过计数原始操作来分析这两种算法,并推导出这两种算法的T(n)。我希望能够计算出每种算法的时间复杂度(Big Oh,O(n)),并发现哪种算法是最有效的。

在这方面的任何帮助都将非常感谢。

感谢您抽出时间来阅读和协助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-28 09:04:06

首先,您应该将数组传递给函数并返回结果。

代码语言:javascript
运行
复制
public static double[] prefixAverages(double[] inArray) {
    double[] outArray = new double[inArray.length];
    //...compute the averages...
    return outArray;
}

然后,您可以在main方法中执行一些手动测试:

代码语言:javascript
运行
复制
public static void main(String... args) {
    System.out.println(
       Arrays.equals(
          prefixAverages(new double[] {1, 2, 3, 4}),
          new double[] {1, 1.5, 2, 2.5}
       )
    );
}

确保此代码打印true

现在,由于浮点数的精度限制,这不是一个非常健壮的解决方案,但它应该可以让您开始。如果你真的想测试你的代码,你应该研究使用像JUnit这样的测试工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5137188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档