Les tris élémentaires en Pascal

Mohamed Slim

On désigne par "tri" l'opération consistant à ordonner un ensemble d'éléments en fonction de clés sur lesquelles est définie une relation d'ordre. Les algorithmes de tri ont une grande importance pratique. Ils sont fondamentaux dans certains domaines, comme l'informatique de gestion où l'on tri de manière quasi-systématique des données avant de les utiliser.
Dans la suite, je vais donner l'implémentation en Pascal des tris élémentaires à savoir le tri à bulles, le tri par insertion et le tri par sélection.

- Titre : Les tris élémentaires en Pascal

- Auteur : Mohamed Slim

- Parution : 30 octobre 2010

- Licence :

Sommaire

- I. Tri à bulles

- II. Tri par insertion

- III. Tri par sélection

I - Tri à bulles

PROCEDURE  permuter(var t : tab ;indice1 :integer ;indice2 :integer);
Var
aux :integer ;

Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
end ;

PROCEDURE tri_bulle(var t: tab; n:integer);
var
i,j, aux:integer;

begin
for i:= n downto 1 do
for j:= 1 to i-1 do
if(t[j]    < t[j+1] ) then
permuter(t,j,j+1);

end;

II - Tri par insertion

PROCEDURE permuter(var t : tab ;indice1 :integer ;indice2 :integer) ;
Var
aux :integer ;

Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
end ;

PROCEDURE tri_insertion(var t :tab ; n :integer)
Var
i ,k: integer ;

Begin
For i:= 2 to n do
Begin
k:=i;
while (( k > 1 ) and ( t[k] < t[k-1] ) ) do
begin
permuter(t,k,k-1);
k :=k-1;
end;
end ;
end;

III - Tri par sélection

PROCEDURE permuter (var t : tab ;indice1 :integer ;indice2 :integer);
Var
aux :integer ;

Begin
Aux := t[indice1] ;
t[indice1] :=t[indice2] ;
t[indice2] :=aux ;
End ;

FUNCTION recherche_position_min(t : tab ;i :integer ) :integer ;
var
min ,j:integer ;

begin
posMin:=i;
for j:=i+1 to n do
if(  t[j] < t[posMin]) then
posMin:=j;

recherche_position_min := posMin ;
end ;

PROCEDURE tri_selection(VAR t :tab) ;
Var
i , Indice_Minimum : integer :
begin
For i :=1 to n do
Begin
Indice_Minimum := recherche_position_min(t,i);
permuter(t,i,Indice_Minimum);
end;
end;