C pour lundi a l'aide!!!!!!!!!!!!!!!!!!!!!!!!
Résolu
firas mili
Messages postés
96
Statut
Membre
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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
Configuration: Windows XP Safari 532.0
A voir également:
- C pour lundi a l'aide!!!!!!!!!!!!!!!!!!!!!!!!
- Ordinateur tout en un cyber lundi - Guide
- Calcul lundi de paques - Guide
- Programme groupe whatsapp du lundi au dimanche - Guide
- Apple cyber lundi - Accueil - Services en ligne
- Cyber lundi apple - Guide
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)