Le tri dans un tableau en algo

407 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
407
Sur SlideShare
0
Issues des intégrations
0
Intégrations
9
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le tri dans un tableau en algo

  1. 1. Un algorithme de tri est une suite finie d'instructions servant à réordonner une séquence d'éléments suivant un critère fixé à priori. Ce critère est en fait une relation d'ordre total sur les éléments à trier. Les algorithmes de tri que nous allons définir traitent des tableaux situés dans la mémoire centrale. Le tri par sélection o Le tri à bulles o Le tri par insertion o Le tri par sélection 1.1. Le tri par sélection Principe Soit à trier un tableau de N cases, numérotés de 1 à N. 1. Chercher la position du plus petit élément du tableau. 2. L'échanger avec le contenu de la première case du tableau (case n°1) 3. Chercher la position du plus petit élément parmi les cases 2 à N 4. L'échanger avec le contenu de la deuxième case du tableau (case n°2) Ainsi de suite, jusqu'à ne plus avoir de cases à explorer. Remarquer qu'on constitue petit à petit "basse" du tableau triée. Exemple 1 Function posmin(T:tab; i,n:integer):integer; var pm,j:integer; begin pm:=i; For j:=i+1 to N do begin If T[j] < T[pm] then pm:=j; end; Posmin:=pm; end; Exemple 2 Procedure triselec (var T:tab; N:integer); vari,p:integer; 1
  2. 2. begin For i:=1 to N-1 do begin p:= posmin(t,i,n); {posmin du minimum dans T entre i et N} if i<>p then permut (T[i],T[p]); end; end; 1.2. Le tri à bulles Principe 1.Comparer le contenu des cases n°1 et 2 s’ils ne sont pas dans le bon ordre, les inverser. 2. Faire de même pour les cases n°2 et 3, 3et 4 .., et ainsi de suite jusqu'à (N-1 et N) 3. Si au moins une inversion a été effectuée, recommencer au début du tableau. Les processus s'arrête lorsqu'au cours du "balayage' complet du tableau, aucune inversion n'a été effectuée (on effectue donc toujours un "tour pour rien"). Exemple procedure tribulle(var T:tab ; N:integer); var i: integer; test: boolean; begin repeat test:=false; for i:=1 to n-1 do begin if t[i] > t[i+1] then begin permut (t[i] ,t[i+1]); test:=true; end; end; n:=n-1; until test=false; end; 1.3. Tri par insertion Hypothèse: On suppose que le tableau est partagé en: partie triée & non triéeet on ne sait rien sur la partie non triée (au début de l'algo, la partie triée est vide). Principe: 2
  3. 3. On prend le premier élément de la partie non triée et on l’insère à sa bonne place dans la partie triée. Exemple Procedure insertion (var T:tab; N:integer); var i,j,tmp: integer; begin tmp:= t[i]; j:=i; while (j>1) and (t[j-1]>tmp) do begin t[j]:= t[j-1]; j:=j-1; end; t[j]:= tmp; end; end; 3

×