Package

Source Code of TriMinimum

/**
* Le tri minimum est basé sur un parcours de la séquence de résultat.
* A chaque étape, il calcul le nouvel élément courant (élément du résultat)
* Cet élément est le minimum de R (partie restant à parcourir).
*
* Compléter la méthode public void trier()
*/

import inf231v.sequences.Observateur;

/**
* @author serasset
*
*/
public class TriMinimum {
 
  SequenceContigueLongueurExplicite seq;
  Observateur obs = null;
  int nbComp = 0;
  int nbModif = 0;
  /**
   * construit un TriMinimum observable prenant ses données dans "data"
   *
   */
  public TriMinimum () {
    this("data", true);
  }
 
  /**
   * construit un TriMinimum  prenant ses données dans "data".
   * Ce tri est observable ssi observable est vrai.
   *
   */ 
  public TriMinimum (boolean observable) {
    this("data", observable);
  }
 
  /**
   * construit un TriMinimum  prenant ses données dans filename.
   * Ce tri est observable ssi observable est vrai.
   *
   */ 
  public TriMinimum (String filename, boolean observable) {
    seq = new SequenceContigueLongueurExplicite(filename);
    if (observable) {
      obs = new Observateur("Tri par sélection du minimum");
    }
  }
 
  /**
   * construit un TriMinimum  prenant ses données dans une séquence de taille l,
         * de valeur générées aléatoirement.
   * Ce tri est observable ssi observable est vrai.
   *
   */ 
  public TriMinimum (int l, boolean observable) {
                // génération d'une séquence aléatoire
    seq = new SequenceContigueLongueurExplicite(l);
    if (observable) {
      obs = new Observateur("Tri par sélection du minimum", 2);
    }
  }
 
        /**
        * A compléter suivant l'algorithme du tri par recherche du minimum
        */
  public void trier() {
    if (obs != null) {
      obs.dessineSequence(seq.t, seq.l);   
    }
    int i = 0;
    while(i != seq.l-1) {
                        //A COMPLETER
                         int imin = i;
      int j = i+1;
      while(j != seq.l){
        nbComp++;
        if(seq.t[imin] > seq.t[j]){
          imin = j;
        }
        j++;
      }
      nbModif++;
      int tmp = seq.t[i];
      seq.t[i] = seq.t[imin];
      seq.t[imin] = tmp;
      // Avancer
      i = i+1;
      if (obs != null) {
        obs.dessineSequence(seq.t, seq.l);
        obs.affiche("i = " + i);
        obs.dormir();
      }
    }
  }
 
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    TriMinimum trimin;
    //trimin.seq.afficher();
    //trimin.trier();
    //trimin.seq.afficher();
    int i =0;
    double sommeComp = 0;
    double sommeModif = 0;
    while(i != 100){
      trimin = new TriMinimum(100, false);
      trimin.trier();
      sommeComp += trimin.nbComp;
      sommeModif += trimin.nbModif;
      System.out.println("Tri numero  "+ i +" : nbComp = " + trimin.nbComp + ", nbModif = " + trimin.nbModif);
      i++;
    }
    System.out.println("Moyenne des 100 tries : moyComp = "+(sommeComp/100.)+", moyModif = "+(sommeModif/100.));
  }

}
TOP

Related Classes of TriMinimum

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.