Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2500 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Procédure de tri à bulles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Procédure de tri à bulles

n°1856968
dj_titeuf
Posté le 02-03-2009 à 23:57:55  profilanswer
 

Bonsoir,
 
Ayant vu en cours une procédure de tri à bulles que je n'ai pas bien comprise, je vous la poste, en espérant que vous pourrez m'éclairer quelque peu:
 

Code :
  1. PROCEDURE Tri_Bulles(T: IN OUT Tableau) IS
  2.  
  3.    Aux: Integer;
  4.    Tri_Fini: Boolean;
  5.    Nbre_Passes: Natural :=0;
  6.  
  7. BEGIN
  8.  
  9.    WHILE NOT Tri_Fini LOOP
  10.      
  11.       Nbre_Passes := Nbre_Passes + 1;
  12.       Tri_Fini := True;
  13.      
  14.       FOR I IN T'First..T'Last-Nbre_Passes LOOP
  15.        
  16.          IF T(I) > T(I+1) THEN
  17.             Tri_Fini := False;
  18.            
  19.             Aux := T(I);
  20.             T(I) := T(I+1);
  21.             T(I+1) := Aux;
  22.            
  23.          END IF;
  24.        
  25.       END LOOP;
  26.      
  27.    END LOOP;
  28.      
  29. END Tri_Bulles;


 
Dans cette situation, je ne parviens pas à faire "tourner" la procédure sur un exemple simple. :( Notamment, je ne comprends pas pourquoi Nbre_Passes := Nbre_Passes + 1 et Tri_Fini := True sont placés là où ils sont.. Pourriez-vous peut-être me détailler un peu comment les choses se passent sur un exemple? Par exemple sur le tableau (vecteur) 3741?
 
J'applique la procédure de tri à ce vecteur à 4 "composantes":
 
- Je rentre dans la boucle While;
- Dès lors, on a Nbre_passes qui se retrouve égal à 1! (0(valeur initiale) + 1) Pourquoi ne fait-on pas le cas Nbre_passes:= 0 dans la boucle? Vu qu'on commence à la valeur 1, on n'a jamais un parcours complet du tableau (de T'First à T'Last)! N'est-ce pas ennuyeux de ne pas accéder à la dernière case? Il me semble que si..
- Suite...?
 
Merci d'avance!

mood
Publicité
Posté le 02-03-2009 à 23:57:55  profilanswer
 

n°1856972
masklinn
í dag viðrar vel til loftárása
Posté le 03-03-2009 à 00:19:07  profilanswer
 

http://en.wikipedia.org/wiki/Bubble_sort


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1857000
vttman2
Je suis Open ...
Posté le 03-03-2009 à 09:13:05  profilanswer
 


Un exemple simple => 1 - 10 -2 - 9 à trier
 
Essayons de Dérouler le programme
 
* 1ere passe  
 
tri_fini <- True
t(1) > t(2) => non ! 1 - 10 reste tel quel  
 
t(2) > t(3) => oui ! inversion 10 - 2 devient 2 - 10
tri_fini <- False
 
t(3) > t(4) => oui ! inversion 10 - 9 devient 9 - 10
tri_fini <- False
 
résultat 1ere passe donne 1 - 2 - 9 - 10
 
* 2eme passe  
 
tri_fini <- True
 
t(1) > t(2) => non ! 1 - 2 reste tel quel  
t(2) > t(3) => non ! 2 - 9 reste tel quel  
t(3) > t(4) => non ! 9 - 10 reste tel quel  
 
Fin de programme car pas de changement détecté donc tri OK
 
ça va mieux ?
 


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Procédure de tri à bulles

 

Sujets relatifs
[MYSQL 5] Resultat d'une procédure stockée dans une table temporaire[maple ] resolution d une procedure recursive maple avec solve
[VBA Excel] Procédure redondante dans UserformProblème de procédure de maj bd, je suis bloqué !!
Utiliser Enterprise Library avec Oracle Stored Proceduremodification d'une matrice dans une procedure
[ACCESS] Procédure double clic sur enregistrementappel procedure stockée de MySQL avec du java
[JDBC/Procédure stockée] Curseur "forward-only", j'en veux pas!Exécuter une procédure contenu dans un module
Plus de sujets relatifs à : Procédure de tri à bulles


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)