samedi 26 septembre 2015

Algorithme de tris en Pascal

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.

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;  

Aucun commentaire:

Enregistrer un commentaire