C pour lundi a l'aide!!!!!!!!!!!!!!!!!!!!!!!!
Résolu
firas mili
Messages postés
96
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
je cherche la méthode de tri shell par récursivité (trier les éléments d'un tableau);
merci de me rependre c pour lundi
je cherche la méthode de tri shell par récursivité (trier les éléments d'un tableau);
merci de me rependre c pour lundi
A voir également:
- C pour lundi a l'aide!!!!!!!!!!!!!!!!!!!!!!!!
- Cyber lundi - Accueil - Services en ligne
- Programme groupe whatsapp du lundi au dimanche pdf - Guide
- Comment regarder tpmp à partir de lundi - Accueil - TV & Vidéo
- Lundi Matin Business Community - Télécharger - Outils professionnels
- Afficher une date (celle du lundi) en fonction du n° semaine - Forum Excel
5 réponses
Salut,
Bien, tu vois quand tu veux, c'est tout à ton avantage et de poster la solution t'honorerait encore plus ;-))
Merci.
Bien, tu vois quand tu veux, c'est tout à ton avantage et de poster la solution t'honorerait encore plus ;-))
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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;
Remarque:
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)
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;
Remarque:
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)