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)
Publié par ZOUARI - Dernière mise à jour le 11 mars 2010 à 16:17 par irongege
Ce document intitulé « Tri Shell -Recursive- » issu de CommentCaMarche (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.
Suggestions
  •  Tri Shell -Recursive-
  •  Tri shell recursive (Résolu) » Bonjour, s'il vous plait je veux une methode de tri shell recursif
  •  Pascal - Tri par insertion - Récursivité- » Fiches pratiques : Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ...
  •  Exercice pascal"trie" » Meilleure réponse: ona trois types d'algorithmes de trie par sélection ,par insertion ou a bull procedure trie_par_selection(var t:tab ; n:integer); var i,j,y,m:integer; begin for i := 1 to n-1 do begin m:=i; for j := i to n do begin if t[j]<t[m] then beg
  •  Tri animé » Meilleure réponse: salut ^ ^) J'ai un peu de mémoire :))) j'ai bien trouvé ... je précise ma réponse :) Les pages ci-dessous (les liens des pages web = pas l'image) sont normalement dans une frame. Sommaire de l'assistant API : Des tris visuels http://dis
  •  Tri shell » Bonjour, pouvez vous m'expliquer le principe du tri shell,et sa méthode de résolution car j'ai un BAC informatique (language imposé est le pascal)que je prépare et ce point m'est encore flou.merci d'avance
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Tri à bulles -récursivité-
Prise en main d'IPcute