简单的线性M移动平均
Posted 十六梦魇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的线性M移动平均相关的知识,希望对你有一定的参考价值。
最近在写Python的爬虫爬取全校学生的成绩信息和照片,发现些许问题。
python的内存管理机制还没摸透,随着程序的运行,占用内存逐渐增大,料想应该是新开辟的空间未及时释放。
先研究研究算法,为比赛做准备。
M移动平均就是 一组数据的相邻的M项平均 逐个后移 若使用简单的循环会使得时间复杂度极大 数组的长度*M
若简单的改进 时间复杂度就仅仅是数组的长度N
1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 import com.sun.accessibility.internal.resources.accessibility; 5 6 public class RunningAverage { 7 public static void main(String[] args) { 8 Double[] test = {2.0,4.0,6.0,2.0,2.0,2.0,4.0,5.0,6.0}; 9 ArrayList<Double> rList = movingAverage(test, 4); 10 for (Double double1 : rList) { 11 System.out.println(double1); 12 } 13 } 14 15 16 public static ArrayList<Double> movingAverage(Double[] A, int M) { 17 int N = A.length; 18 Double sum = 0.0; 19 ArrayList<Double> sumList = new ArrayList<Double>(); 20 21 //计算前M-1项的和 22 for (int i = 0; i < M-1; i++) { 23 sum += A[i]; 24 } 25 26 for (int i = M-1; i < N; i++) { 27 sum += A[i]; //加上最后一项 28 sumList.add(sum/M); 29 sum -= A[i-M+1]; //减去第一项 30 } 31 return sumList; 32 } 33 34 }
以上是关于简单的线性M移动平均的主要内容,如果未能解决你的问题,请参考以下文章