定义:
计算数组X里的前缀平均值,表明从数组第一个数开始求和,前n个的和就除以n,依次计算到数组所有元素的和除以总数结束,所得的n个结果就是所有要求的平均值,然后放入一个新的数组。
我们想计算出数组A,该数组满足的条件为:当j=0,…,n-1时,A[ j ]是X[ 0 ],…,X[ j ]的平均值。
public static void main(String []args) {
double[] arr = {4,6,10,8,2};
double[] result = qianZhui(arr);
for(double i : result){
System.out.print(i+" ");
}
}
public static double[] qianZhui(double[] array){
int len = array.length; //临时空间
double[] arr = new double[len];
double total = 0;
for(int i = 0;i < array.length;i++){
total += array[i];
arr[i] = total/(i+1);
}
return arr;
}
最后的结果也没做处理,可能小数位数会比较长
算法运行:
- 初始化变量n和total,用时O(1)
- 初始化长度为n数组arr,用时O(n)
- for循环用时O(n)
- i从0到array数组长度-1,循环体被执行n次,共用时O(n)
大O符号使得我们忽视常量因子和低阶项,转而关注函数中影响幅度较大的主要成分,所以运行时间为O(n)