Tri à bulle

Résolu
Bonjour,
je cherche un algorithme de tri à bulles mais version recursive
Configuration: Windows XP
Firefox 2.0.0.12

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. <code>je m'excuse il ya une faute ds la derniere version voila une autre version plus meilleur
    procedure Tribull(var Tab:Tableau;n:integer) ;
    var j, t, temp : integer;
    begin 
      if n >=1 then
      begin
      for j := 2 to n do 
       if Tab[ j-1 ] > Tab[ j ] then
         begin
          temp := Tab[j-1]; 
          Tab[j-1] := Tab[j]; 
          Tab[j] := temp;
          end;
       tribull(tab,n-1);
      end; 
    end;
    1. 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[i] 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[i] > t[i + 1] Then
      Begin
      aux := t[i];
      t[i] := t[i + 1];
      t[i + 1] := aux;
      End;
      Tri_bulles (t, n);
      End;
      End;
      1. voila jé trouvé la solution
        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[i] 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[i] > t[i + 1] Then
        Begin
        aux := t[i];
        t[i] := t[i + 1];
        t[i + 1] := aux;
        End;
        Tri_bulles (t, n);
        End;
        End;
        1. est ce que c'est une methode recursive ? et je cherche un algorithme sous cette forme ( pas langage C ou Java); cette procedure est iterative ,alors comment je peut le rendre recursive . et je vous remerci.
          PRODECURE Tri_bulle (Tableau a[1:n])

          VARIABLE permut : Booleen;

          REPETER
          permut = FAUX
          POUR i VARIANT DE 1 à N-1 FAIRE
          SI a[i] > a[i+1] ALORS
          echanger a[i] et a[i+1]
          permut = VRAI
          FIN SI
          FIN POUR
          TANT QUE permut = VRAI

          FIN PROCEDURE
          1. en c++ tu peux faire comme ca :
            int i, j, k ;
            i=0 ;
            while (i<n)
            {
            for (j=n; j>=i+1; j--)
            if (T[j]<T[j-1];
            {
            l=T[j-1];
            T[j-1]=T[j];
            T[j]=l;
            }
            }
            i++;
            }