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.