Skip to content
Snippets Groups Projects
Select Git revision
  • e9382975732d4890f966fb10ac4e4ad947a5a6c0
  • tp1 default protected
  • tp5_12313574_12001045
  • tp5_12314926
  • tp5_11924788_11705416
  • tp6 protected
  • tp5 protected
  • tp5_12008351_12106646
  • tp4 protected
  • tp3 protected
  • tp2 protected
  • master protected
12 results

Analyzer.java

Blame
  • Analyzer.java 4.44 KiB
    import java.io.*;
    import java.util.ArrayList;
    
    /**
        Classe utilisée pour faire des statistiques élémentaires
        sur une séquence d'opérations.
     */
    public class Analyzer {
    
        /**
            Constructeur de la classe analyse
            Complexité en temps/espace, pire et meilleur cas : O(1)
         */
        public Analyzer() {
            cost = new ArrayList<Double>();
            cumulative_cost = new ArrayList<Double>();
            cumulative_square = 0.;
        }
    
        /**
            Ajoute un coût, une valeur à l'analyse.
            Complexité en temps/espace, pire cas : O(size)
            Complexité en temps/espace, meilleur cas : O(1)
            Complexité amortie : O(1)
            @param x est la valeur que l'on souhaite ajouter à l'analyse.
         */
        void append(double  x){
            cost.add(x);
            cumulative_cost.add( (!cumulative_cost.isEmpty()) ? cumulative_cost.get(cumulative_cost.size()-1)+x : x);
            cumulative_square += x*x;
        }
    
        /**
            Renvoie la somme des coûts enregistrés dans cette analyse.
            Complexité en temps/espace, meilleur cas : O(1)
            @returns la somme des coûts enregistrés dans cette analyse.
         */
        double get_total_cost(){
            return cumulative_cost.get(cumulative_cost.size()-1);
        }
    
        /**
            Renvoie le coût amorti d'une opération.
            Complexité en temps/espace, meilleur cas : O(1)
            @param pos est l'indice de l'opération pour laquelle on veut connaître le coût amorti.
            @returns le coût amorti d'une opération.
         */
        double get_amortized_cost(int pos){
            return (pos > 0)? cumulative_cost.get(pos)/pos : cumulative_cost.get(pos);
        }
    
        /**
            Renvoie la moyenne des coûts de toutes les opérations enregistrées dans l'analyse.
            Complexité en temps/espace, meilleur cas : O(1)
            @returns la moyenne des coûts de toutes les opérations enregistrées dans l'analyse.
         */
        double get_average_cost(){
            if(cumulative_cost.isEmpty())
                throw new RuntimeException("List is empty");
            return cumulative_cost.get(cumulative_cost.size()-1)/cumulative_cost.size();
        }
    
        /**
            Renvoie la variance des coûts de toutes les opérations enregistrées dans l'analyse.
            Complexité en temps/espace, meilleur cas : O(1)
            @returns la variance des coûts de toutes les opérations enregistrées dans l'analyse.
         */
        double get_variance(){
            double mean, mean_square;
            mean = get_average_cost();