我正在做一个练习题,我被卡住了。问题是
“给定一个包含 n 个数字的数组 a(比如双精度数),考虑计算前 i 个数字的平均值的问题,i
范围从0
到n-1
。也就是说,计算长度为 的数组 b n
,其中
b[i] = a[0] + a[1] ....+ a[i]/(i + 1)
为0 <= i < n
。编写一个 Java 程序来解决这个问题。你的程序可以生成它自己的数组,例如a[i] = i + 1
。看看你可以在不到 5 秒的时间内处理多大的数组。(为了完整的信用,它应该至少是一百万。)表征你的算法的时间复杂度。
这是我解决它的尝试:
public class largeArray{
public static void main(String[] args){
double[] aa = new double[1000000];
System.out.println(CalculateAvg(aa));
}
public static double CalculateAvg(double[] a){
int i =0;
double[] array = new double[i];
a[i] = i + 1;
for(int k=0; k<array.length; i++){
double total = a[k]+a[k];
double sum = ((total)/a[i]);
}
return a[i];
}
}