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

  FORUM HardWare.fr
  Programmation
  Ada

  Tri des éléments d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tri des éléments d'un tableau

n°1849604
dj_titeuf
Posté le 10-02-2009 à 22:49:53  profilanswer
 

Bonjour,
 
J'ai trouvé une fonction visant à trier par ordre croissant les éléments d'un tableau:
 

Code :
  1. FUNCTION Tri_Croissant(T_User: Tableau) RETURN Tableau IS;
  2.  
  3.       T: Tableau := T_User;
  4.       Continuer : Boolean := True;
  5.       Aux: Natural;
  6.      
  7.    BEGIN
  8.      
  9.       WHILE (Continuer = True) LOOP
  10.        
  11.          Continuer := False;
  12.        
  13.          FOR I IN T'First..(T'Last -1) LOOP
  14.            
  15.             IF (T(I) > T(I+1)) THEN
  16.              
  17.                Continuer := True;
  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.       RETURN T;
  30.      
  31.       end Tri_Croissant;


 
Je ne comprends pas tout: d'une part, je ne vois pas à quoi sert d'introduire la variable booléenne Continuer, je ne vois ni l'utilité qu'elle a dans la fonction, ni la façon dont on procède pour la faire passer de True à False. D'autre part, mais cela reste très lié au point précédent, il me semble que je n'aurai pas inclus la boucle while.. à quoi sert-elle? Enfin, pourquoi n'y-a-t-il pas de else pour faire suite à if?
 
Merci d'avance!

mood
Publicité
Posté le 10-02-2009 à 22:49:53  profilanswer
 

n°1908116
Hibou57
Posté le 23-07-2009 à 20:55:18  profilanswer
 

dj_titeuf a écrit :

Je ne comprends pas tout: d'une part, je ne vois pas à quoi sert d'introduire la variable booléenne Continuer,


Elle sert à savoir si on a fini de trier la liste ou si on doit encore continiuer à la trier (voir plus loin)
 

dj_titeuf a écrit :

je ne vois ni l'utilité qu'elle a dans la fonction, ni la façon dont on procède pour la faire passer de True à False.


Comme tu le vois, elle est fixée à True lorsque lors du parcours de la liste, est trouvé un élément à la position i, qui est plus grand que l'élément à la position i+1. C'est à dire que la variable est fixée à True, dès qu'une condition indiquant que la liste n'est pas ordonnée est rencontrée.
 
En d'autres termes, tant que la liste n'est pas entièrement triée, on continue à la trier.  ;)  
 

dj_titeuf a écrit :

D'autre part, mais cela reste très lié au point précédent, il me semble que je n'aurai pas inclus la boucle while.. à quoi sert-elle? Enfin, pourquoi n'y-a-t-il pas de else pour faire suite à if?


La boucle interne “ for ” sert à tester la liste et à permuter ses élément. La boucle “ for ” ne fait qu'un seul passage, et il est rare que la liste soit triée à la suite d'un seul passage.
 
Le plus souvent il en faudra plusieurs. C'est le rôle de la boucle “ while ” qui est executée tant que la liste n'est pas triée.
 
En résumé, l'idée de cette algorithme qui est surtout à vocation pédagogique est la suivante : tant que la liste n'est pas triée, inspecter tous les éléments de la liste tout en testant s'ils sont ordonnés, et si on rencontre deux élément non-ordonnés, on les permute (on les interverti).
 
Ou encore, en pseudo code à la sauce Ada :
 
Boucle_1: While non-trié
   Boucle_2: Sur tous les éléments du début à la fin
      Comparer un élément et l'élément suivant
      Si l'élément est plus grand que l'élément suivant alors
         On indique que la liste n'est toujours pas triée
         On permute les deux élément de sorte qu'il soit maintenant ordonnés
   end Boucle_2;
end Boucle_1;
 
 
À bientôt peut-être
 
Y.


Message édité par Hibou57 le 23-07-2009 à 21:00:55

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

  Tri des éléments d'un tableau

 

Sujets relatifs
[RESOLU] Aligner verticalment un tableauTableau php
recuperer numero de ligne tableauBackground tableau
Code pour trier un tableau par insertions simples??[html][js] Tableau de boutons radio ?
Lire et modifier des éléments d'un fichier texteEclipse - GMF éléments hérités d'UML
Dédoublonnage d'un tableauTri de tableau sur la fréquence des éléments
Plus de sujets relatifs à : Tri des éléments d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR