zoukankan      html  css  js  c++  java
  • 简单的线性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 }  
  • 相关阅读:
    clickhouse使用docker安装单机版
    nacos使用docker安装单机版
    第三周学习进度
    第二周学习进度
    二柱子四则运算定制版
    课堂测试小程序
    学习进度
    阅读计划
    自我介绍
    寻找水王
  • 原文地址:https://www.cnblogs.com/16crow/p/6346671.html
Copyright © 2011-2022 走看看