Package

Source Code of TriInsertion

/**
* Le tri par insertion est basé sur un parcours de la séquence donnée.
* A chaque étape, il insère le nouvel élément courant dans la séquence triée.
* COMPLETER LA METHODE trier() suivant l'algorithme du tri par insertion.
*/
import inf231v.sequences.Observateur;

public class TriInsertion {

  SequenceContigueLongueurExplicite seq;
  Observateur obs = null;
  int nbComp = 0;
  int nbModif = 0;
  /**
   * construit un TriInsertion observable prenant ses données dans "data"
   *
   */
  public TriInsertion () {
    this("data", true);
  }
 
  /**
   * construit un TriInsertion  prenant ses données dans "data".
   * Ce tri est observable ssi observable est vrai.
   *
   */ 
  public TriInsertion (boolean observable) {
    this("data", observable);
  }
 
 
  /**
   * construit un TriInsertion  prenant ses données dans filename.
   * Ce tri est observable ssi observable est vrai.
   *
   */ 
  public TriInsertion (String filename, boolean observable) {
    seq = new SequenceContigueLongueurExplicite(filename);
    if (observable) {
      obs = new Observateur("Tri par insertion");
    }
  }
 
  public TriInsertion (int l, boolean observable) {
    seq = new SequenceContigueLongueurExplicite(l);
    if (observable) {
      obs = new Observateur("Tri insertion", 3);
    }
  }
 
        /**
         * Réaliser la méthode trier() suivant l'algorithme de tri par insertion
         * Ajouter l'affichage de la séquence grâce à l'observateur obs
         * Méthodes dessineSequence(seq.t, seq.l), enRouge(i) et enBlanc(i)
         */
  public void trier() {
                // A COMPLETER
                if (obs != null) {
      obs.dessineSequence(seq.t, seq.l);   
    }
    //tri
    int i =0;
    int j =0;
    int tmp = 0;
    while(i != seq.l){
      j = i;
      tmp=seq.t[i];
      while(j != 0 && seq.t[j-1] > tmp){
        nbComp++;
        nbModif++;
        seq.t[j] = seq.t[j-1];
        j--;
      }
      seq.t[j] = tmp;
      i++;
      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
    TriInsertion triins;
    /**triins.seq.afficher();
    triins.trier();
    triins.seq.afficher();*/
    int i =0;
    double sommeComp = 0;
    double sommeModif = 0;
    while(i != 100){
      triins = new TriInsertion(100, false);
      triins.trier();
      sommeComp += triins.nbComp;
      sommeModif += triins.nbModif;
      System.out.println("Tri numero  "+ i +" : nbComp = " + triins.nbComp + ", nbModif = " + triins.nbModif);
      i++;
    }
    System.out.println("Moyenne des 100 tries : moyComp = "+(sommeComp/100.)+", moyModif = "+(sommeModif/100.));
  }


}
TOP

Related Classes of TriInsertion

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.