Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1551 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


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR