Tri Shell -Recursive-
Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri Shell :
Procedure Tri_Shell_Rec (Var t: TAB; n,h : integer); Var aux,i : integer; begin If h > 0 Then Begin If n > h Then begin Tri_Shell_Rec (t,n - h,h); If t[n] < t[n - h] Then Begin aux:= t[n]; i := n; Repeat t[i] := t[i - h]; i := i - h; Until (i = h) Or (aux > t[i - h]); t[i] := aux; End; End; Tri_Shell_Rec (t,n,h Div 3); End; End;
Remarques:
Tester cette procédure sur des tableaux de petites tailles, car si n'est pas le cas le nombre des appels devient important et en aura le problème de débordement de la pile (la limite technique de la récursivité est la mémoire).
On peut augmenter la taille du tableau test on augmentant la taille de la pile (Option\Compilateur\Paramètres mémoire\Taille pile)
Ce document intitulé « Tri Shell -Recursive- » 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.