Tri par fusion - récursivité-

Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par fusion :

Procedure Tri_Fusion (Var t : TAB; g, d : integer);  
Var  
   m, i, j, k : integer;  
   s : TAB;  
Begin  
     If d > g Then  
     Begin           
          m := (g + d) Div 2;  
          Tri_Fusion (t, g, m);  
          Tri_Fusion (t, m + 1, d);  
            
     For i := m DownTo g Do  
              s[i] := t[i];  
            
     For j := m + 1 To d Do  
              s[d + m + 1 - j] := t[j];  
            
     i := g; j := d;  
          For k := g To d Do  
          Begin  
               If s[i] < s[j] Then  
               Begin  
                    t[k] := s[i];  
                    i := i + 1;  
               End  
               Else  
                   Begin  
                         t[k] := s[j];  
                         j := j - 1;  
                   End;  
          End;  
     End;  
End;


Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche.
Ce document intitulé « Tri par fusion - récursivité- » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.