
 
 
 
Comment classer des données? 
 
 
Utiliser une tableau auxiliaire spécialement construit : 
Valeur clé    |  indice repérant une donnée 
 
Utiliser l'algorithme de classementde java  (sort) - il faut un critère de 
comparaison 
L'ordre des indices indiquera l'ordre des données classées selon le critère de 
la clé 
 
public class MaTable implements java.lang.Comparable{ 
 //permet de claser selon un critère particulier (ici double) une structure indicee 
 //http://java.developpez.com/faq/java/?page=langage_donnees 
    double dist; 
    int indice; 
   
    public double get_dist(){return dist;}; 
     
    public int compareTo(Object other) { 
    \\le critère de comparaison : rend +1 ; 0 ; -1 
   double nombre1 = ((MaTable) other).get_dist();  
   double nombre2 = this.get_dist();  
   if (nombre1 > nombre2) return -1;  
   if (nombre1 < nombre2) return +1;  
   return 0;  
    }  
  } 
   
 
public void calculeDist(int x,int y){ 
    MaTable[] t= new MaTable[lesVilles.size()]; 
    Ville v; 
    double d1,d2; 
    for(int i=0;i<lesVilles.size();i++) { 
   v=(Ville)lesVilles.get(i); 
   d1=v.posx-x; 
   d2=v.posy-y; 
   t[i]= new MaTable() ; 
   t[i].dist=Math.sqrt(d1*d1+d2*d2); 
   t[i].indice=i; 
    } 
    Arrays.sort(t); 
    if (logFrame==null) logFrame = new LogFrame(); 
    logFrame.setVisible(true); 
    logFrame.clearText(); 
    logFrame.addText("CLICK en : "+x+" "+y); 
    for(int i=0;i<t.length;i++) { 
   v=(Ville)lesVilles.get(t[i].indice); 
   logFrame.addText(t[i].dist+"\t"+v.nom); 
    } 
     
  }