2.3 Tri_Bulle.java

//////////////////////////////////////////////////////////////
//                                                          //
//             MODULE DE STRUCTURES DE DONNEES              //
//                                                          //
//      ALGORITHMES DE TRI PAR LA METHODE DE LA BULLE       //
//                                                          //
// Cette classe derive la la classe abstraite               //
//    Algorithmes_Tri et implemente le tri par la methode   //
//    de la bulle                                           //
// proprietes fonctionnelles                                //
//    tri-sel-iter(l1, l) =                                 //
//        si l = listevide alors l1                         //
//        sinon tri-sel-iter(l1&[min(l)], supprimer-min(l)) //
//        fsi                                               //
//    tri (l) = tri-sel-iter(listevide, l)                  //
//                                                          //
// Auteur: Christian CARREZ,                                //
// Institution: CNAM 292 rue Saint Martin, 75141 Paris 03   //
// Derniere modification: 17 fevrier 2000                   //
//////////////////////////////////////////////////////////////

package Demonstration_Tri;

import java.awt.*; 
import Commun_Demonstration.*;

public class Tri_Bulle extends Algorithmes_Tri { 
  public Tri_Bulle (int[] V_Init, int L_Anim, int H_Anim) { 
    super(V_Init, L_Anim, H_Anim, " bulle ");
  } 

  void Le_Tri () throws StopAnim { // méthode de la bulle
    int K, L;
    for (K = 0; K < ieme.length - 1; K++) {
                             // recherche du Kième plus grand
      Colors[K] = Color.blue;          // marquage du premier
      Colors[ieme.length - 1] = Color.green;
      for (L = ieme.length - 1; L >= K + 1; L--) {
        Colors[L - 1] = Color.green;
        Redessiner();
        if (ieme[L] < ieme [L-1]) { 
          Echanger (L-1, L);                          // rangement
                                 // L est meilleur candidat que L-1
        } 
        Colors[L] = Color.red;
      } 
      Colors[K] = Color.red; 
      controleDemo.FinEtape() ;
    } 
    Redessiner ();
  } 
}