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

  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++;
    }
    1
    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
      0
      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;
        0
        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
          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