Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java prefixAverages/array帮助_Java_Arrays_Algorithm - Fatal编程技术网

Java prefixAverages/array帮助

Java prefixAverages/array帮助,java,arrays,algorithm,Java,Arrays,Algorithm,我试图将两个独立的算法翻译成Java代码,以便对它们进行测试;第一种算法(PrefixAverages1)是: 输出:一个由数字组成的n元素数组,其中A[i]是元素X[0],X[1],…,X[i]的平均值 这是我为PrefixAverages1提出的Java翻译: import java.util.Arrays; public class PrefixAverages1 { static double array[] = new double[10]; public static void

我试图将两个独立的算法翻译成Java代码,以便对它们进行测试;第一种算法(PrefixAverages1)是:

输出:一个由数字组成的n元素数组,其中A[i]是元素X[0],X[1],…,X[i]的平均值

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

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();
}

}
输出:一个由数字组成的n元素数组,其中A[i]是元素X[0],X[1],…,X[i]的平均值

这是我为PrefixAverages2设计的Java翻译:

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();
}

}
导入java.util.array;
公共类前缀平均值2{
静态双数组[]=新双数组[10];
公共静态void prefixAverages(){
双s=0;
对于(int i=0;i<10;i++){
s=s+数组[i];
数组[i]=s/(i+1);
}
数组[0]=10;
System.out.println(array.toString(array));
}
公共静态void main(字符串[]args){
prefixAverages();
}
}
我正在尝试测试算法,但不确定从哪里开始。我试图建立一个数组,然后通过手动运行这些算法来应用它们,以获得较小的n值

从何处/如何开始向数组添加元素

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

在此方面的任何帮助都将不胜感激


感谢您花时间阅读和帮助。

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

public static double[] prefixAverages(double[] inArray) {
    double[] outArray = new double[inArray.length];
    //...compute the averages...
    return outArray;
}
然后,您可以使用主方法进行一些手动测试:

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


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

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

public static double[] prefixAverages(double[] inArray) {
    double[] outArray = new double[inArray.length];
    //...compute the averages...
    return outArray;
}
然后,您可以使用主方法进行一些手动测试:

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


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

你使用一个数组作为输入和输出有什么好的理由吗?你应该把两者分开,至少现在是这样。您的第一个实现肯定无法工作,因为您将覆盖阵列中稍后需要阅读的部分。@Mark谢谢您的回复,Mark。我只是按照算法伪代码所说的去做,但也许我做了一些错误的事情,正如你所说的。您能建议一种替代方法吗?非常感谢。米克,看看你的伪代码。它使用不同的数组进行输出和输入(
a[]
vs
X[]
)。您使用一个数组进行输入和输出是否有充分的理由?你应该把两者分开,至少现在是这样。您的第一个实现肯定无法工作,因为您将覆盖阵列中稍后需要阅读的部分。@Mark谢谢您的回复,Mark。我只是按照算法伪代码所说的去做,但也许我做了一些错误的事情,正如你所说的。您能建议一种替代方法吗?非常感谢。米克,看看你的伪代码。它使用不同的数组进行输出和输入(
a[]
vs
X[]
)。感谢大家的帮助-您的评论帮助我解决了问题!谢谢你们的帮助,你们的评论帮助我解决了我的问题!