Tri à bulle

Résolu/Fermé
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 - 24 mars 2008 à 12:49
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 - 24 mars 2008 à 13:59
Bonjour,
je cherche un algorithme de tri à bulles mais version recursive

5 réponses

couc Messages postés 13 Date d'inscription dimanche 4 février 2007 Statut Membre Dernière intervention 10 novembre 2008 1
24 mars 2008 à 12:54
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
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
24 mars 2008 à 13:01
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
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
24 mars 2008 à 13:59
<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
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
24 mars 2008 à 13:11
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
24 mars 2008 à 13:12
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