首页 > 代码库 > 简单的线性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移动平均
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。