tous les tries recursive

الموضوع في 'أرشيف المنتدى التعليمي' بواسطة med-gafsi, بتاريخ ‏20 أفريل 2008.

  1. med-gafsi

    med-gafsi عضو نشيط

    إنضم إلينا في:
    ‏26 مارس 2008
    المشاركات:
    211
    الإعجابات المتلقاة:
    11
      20-04-2008 00:42
    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 := t[i - h]; i := i - h; Until (i = h) Or (aux > t[i - h]); t := 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)
    +++++++++++++++++++++++++++++++++++++
    Voici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles :


    Procedure Tri_bulles (var t : TAB; n : integer);Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; Var ok : boolean; i : integer; Begin ok := true; i := 1; Repeat If t[i + 1] < t Then ok := false Else i := i + 1; Until ((Not ok) or (i >= n)); Trier := ok; End; Begin If Not Trier (t, n) Then Begin For i := 1 To n - 1 Do If t > t[i + 1] Then Begin aux := t; t := t[i + 1]; t[i + 1] := aux; End; Tri_bulles (t, n); End; End;++++++++++++++++++++++++++++++++++++++++++++++ ++++++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 := t; 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 < s[j] Then Begin t[k] := s; i := i + 1; End Else Begin t[k] := s[j]; j := j - 1; End; End; End;End;++++++++++++++++++++++++++++++++++++++++++ +++++++++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 Tri_Ins (t,n - 1); If t[n] < t[n - 1] Then Begin aux:= t[n]; i := n; Repeat t := t[i - 1]; i := i - 1; Until (i = 1) Or (aux > t[i - 1]); t := aux;

    :satelite::satelite::satelite::satelite::satelite:
     
    4 شخص معجب بهذا.
  2. med-gafsi

    med-gafsi عضو نشيط

    إنضم إلينا في:
    ‏26 مارس 2008
    المشاركات:
    211
    الإعجابات المتلقاة:
    11
      21-04-2008 13:07
    pa de reponce??
     

مشاركة هذه الصفحة

جاري تحميل الصفحة...