Code source complet : Implémentation du tri à bulles
Algorithmique > Algorithmes de tri > Tri à bulles [ Réagir ]Informations
Implémentation du tri à bulles (code source du 2006-11-01) :Implémentation standard du tri à bulles avec arrêt dès que la boucle principale n'a pas eu à permuter deux éléments.
Code source complet (Pascal)
{==============================================================================} unit UBubbleSort; { Algorithme du "tri à bulles" Date : 1 novembre 2006 Documentation : http://www.uzit.fr/algorithmique/tri-bulles.html -------------------------------------------------------------------------------- Utilisation de la procédure BubbleSort : * Paramètres : (A : Tableau à trier) (N : Nombre d'éléments du tableau A) * Sortie : (Aucune) (Le tableau A passé en paramètre est trié) Adaptations de la procédure BubbleSort : * Pour changer le type de données à trier, modifier les déclarations de type des types TMyType et TMyTypeArray * Pour modifier le critère de tri, adapter la fonction Compare() ; celle-ci renvoie TRUE si un élément de valeur (FirstValue) doit être placé avant un élément de valeur (SecondValue) dans le tableau trié } {==============================================================================} interface type TMyType = Int64; TMyTypeArray = Array of TMyType; procedure BubbleSort(var A: TMyTypeArray; N: Integer); function Compare(FirstValue,SecondValue: TMyType): Boolean; implementation procedure BubbleSort(var A: TMyTypeArray; N: Integer); var I,J: Integer; Tmp: TMyType; Sorted: Boolean; begin I:=0; Sorted:=False; While (I<N) and (not Sorted) do begin Sorted:=True; For J:= N downto I+1 do if Compare(A[J],A[J-1]) then begin Tmp:=A[J]; A[J]:=A[J-1]; A[J-1]:=Tmp; Sorted:=False; end; Inc(I); end; end; function Compare(FirstValue,SecondValue: TMyType): Boolean; begin Result:=(FirstValue<SecondValue); end; end.