NOTES :
Le programme d'exemple montre la différence de vitesse entre le 'tri à bulles' et le 'tri rapide'. Dans le cas de tableau de faible taille ( quelques centaines d'éléments ),
le tri à bulles est bien suffisant, mais dans le cas de tableau très importants le 'tri rapide' doit être utilisé.
Le tri est ici appliqué à des tableaux d'entiers, mais il est facile de l'adapter à d'autres types.
CODE :
Procedure TriABulles(Var Tab:ArrayOf Integer); Var i,j,t:Integer; Begin For i:=Low(Tab) To High(Tab)-1 DoFor j:=i+1 To High(Tab) DoIf Tab[i]>Tab[j] Then Begin
t:=Tab[i];
Tab[i]:=Tab[j];
Tab[j]:=t; End; End;
Procedure TriRapide(Var Tab:ArrayOf Integer); Var i,j,t:Integer; Function Partition(m,n:Integer):Integer; Var i,j,v:Integer; Begin
v:=Tab[m];
i:=m-1;
j:=n+1; While True Do Begin Repeat Dec(j) Until Tab[j]<=v; Repeat Inc(i) Until Tab[i]>=v; If (i<j) ThenBegin
t:=Tab[i];
Tab[i]:=Tab[j];
Tab[j]:=t; End ElseBegin
Result:=j;
Exit; End; End; End;
Procedure FaitTri(m,n:Integer); Var p:Integer; Begin If m<n ThenBegin
p:=partition(m,n);
FaitTri(m,p);
FaitTri(p+1,n); End; End; Begin
FaitTri(Low(Tab),High(Tab)); End;