首页 > 代码库 > 简单的线性M移动平均

简单的线性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移动平均