Académique Documents
Professionnel Documents
Culture Documents
ALGORITHMIQUE 1
Niveaux: 1A
Equipe ALGO
Année universitaire:
2021/2022
Objectifs
• Appliquer les algorithmes de Tri sur les vecteurs:
✔Tri par sélection
✔Tri à bulles
✔Tri par insertion
• Maitriser l’algorithme de recherche dichotomique dans un vecteur
2
Introduction
Une opération de tri consiste à ordonner une suite de valeurs mémorisées selon un critère
bien déterminé qu’on appelle clé et suivant une relation d’ordre (croissant ou décroissant).
T[i] 60 50 20 40 30
50<60? 20<50?40<20? 30<20?
min
Tri par Sélection
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
min min min
indice 1 2 3 4 5
T[i] 20 50 60 40 30
60<50? 40<50?30<40?
Tri par Sélection
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
min min
indice 1 2 3 4 5
T[i] 20 30 60 40 50
40<60? 50<40?
Tri par Sélection
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
min min
indice 1 2 3 4 5
T[i] 20 30 40 60 50
50<60?
1. on insère le second élément à sa place dans le sous tableau constitué du premier élément
2. on insère ensuite le troisième élément du tableau à sa place dans le sous tableau constitué
du premier et du deuxième élément
3. à l'étape i, on cherche la bonne position de l'élément T[i] dans le sous tableau trié de 1 à
i-1.
T[i] 60 50 20 40 30
60>50?
Décalage à droite
temp: 50
Tri par Insertion
Exemple d’exécution
T[i] 50 60 20 40 30
60>20?
Décalage à droite
temp: 20 50>20?
Décalage à droite
Tri par Insertion
Exemple d’exécution
T[i] 20 50 60 40 30
60>40?
Décalage à droite
50>40?
temp: 40 Décalage à droite
20>40?
Pas de décalage
Tri par Insertion
Exemple d’exécution
T[i] 20 40 50 60 30
60>30?
Décalage à droite
50>30?
Décalage à droite
40>30?
temp: 30
Décalage à droite
20>30?
Pas de décalage
1)Comparer, deux à deux, les éléments consécutifs d'un tableau ( T[i] et T[i+1]).
60>50?
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 50 60 20 40 30
60>20
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 50 20 60 40 30
60>40
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 50 20 40 60 30
60>30
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 50 20 40 30 60
50>20
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 50 40 30 60
50>40
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 40 50 30 60
50>30
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 40 30 50 60
50>60
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 40 30 50 60
20>40 40>30
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 30 40 50 60
40>50
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 30 40 50 60
50>60
2
Tri à bulles
Exemple d’exécution
Soit le tableau T suivant composé de 5 entiers :
indice 1 2 3 4 5
T[i] 20 30 40 50 60
2
Tri à Bulles
Algorithme
Algorithme Tri_Bulles
Constante n : entier
Type Tab_Entier = Tableau[1..n] de Entier
Variable permute : Booléen
i, temp : entier
T : Tab_Entier
Début
Répéter
permute faux
Pour i allant de 2 à n Faire
Si (T(i-1) > T(i)) Alors
Permute vrai
temp T(i-1)
T(i-1) T(i)
T(i) temp
FinSi
FinPour
Jusqu’à (Non(permute))
Fin
Evaluation des performances
Le Tri par Sélection : Le nombre de boucles internes est estimé à n(n-1)/2 et le nombre maximal de
déplacements d’éléments est de l’ordre de 2(n-1). Cette technique est intéressante dans le cas où le tableau
est en désordre total mais elle n’est pas optimale si la première partie du tableau est triée.
Le Tri par Insertion : Le nombre de boucles interne est estimé à n(n-1)/2. Cette technique est intéressante
pour des tableaux ayant été déjà triés mais auxquels on a rajouté de nouveaux éléments en fin du tableau.
Le Tri à Bulles : Cette technique nécessite un grand nombre de déplacements d’éléments. Il va nécessiter
(n-1) boucles principales dans le cas où le dernier élément devrait être placé en premier. Le nombre
maximal de boucles internes est de l’ordre de (n-1)2 . Elle peut être intéressante quand le tableau initial est
déjà pré-trié c’est à dire que les éléments ne sont pas disposés trop loin de leur position finale.
Recherche dichotomique
Algorithme qui détermine la première position d’une valeur
donnée dans un tableau TRIÉS
Principe
● Décomposer un tableau T en deux sous-tableaux
● Trois cas :
○ Si Val = T[mil] alors Val est trouvée et la recherche est terminée
○ Si Val < T[mil] alors la recherche de Val sera effectuée dans la partie gauche
du tableau T
○ Si Val > T[mil] alors la recherche de Val sera effectuée dans la partie droite du
tableau T
● La recherche sera poursuivie tant que T[mil]!=Val et la dimension de sous-tableau
reste valide (>0)
Recherche dichotomique
V=13
1 2 3 4 5 6 7 8 9 10
d f
1 2 3 4 5 6 7 8 9 10
d f
1 2 3 4 5 6 7 8 9 10
d f
1 2 3 4 5 6 7 8 9 10
32
d f
Recherche dichotomique
Algorithme
Algorithme Dichoto
Constante N=Val1
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
d, f, mil : entier
X : entier (* X est l’élément à chercher dans le tableau *)
Début
Lire(X)
d 1
f N
Répéter
mil (d + f) div 2
Si (X < T(mil)) Alors f mil – 1
Sinon d mil +1
Fin Si
Jusqu’à (X=T(mil)) ou (d > f)
Si (X=T(mil)) Alors ECRIRE (X, 'Se Trouve dans T ')
Sinon ECRIRE (X, 'Inexistant dans T ')
Fin Si
Fin