Vous êtes sur la page 1sur 60

-

ENSAM RABAT

Présenté par :
 Creative Commons
 Pr. Nordine ZIDANE

Le 01/12/2021ZIDANE NORDINE 11
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de
tri.

2
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de tri.

Objectifs de ce module
• Présenter le problème important du tri d’un
ensemble de données numériques.

• Proposer plusieurs solutions de natures


diverses :
– Algorithmes itératifs.
– Algorithmes récursifs.

3
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de tri.

Plan de ce module

1. Généralités.
2. Algorithmes itératifs.
3. Algorithmes récursifs.

4
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de tri.

1. GÉNÉRALITÉS.

5
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

Plan de ce chapitre

a. But des algorithmes de tri.


b. Méthodes utilisées.

6
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

a. But des algorithmes de tri.


• À partir d’une liste de données numériques,
réordonner
ces valeurs par ordre croissant.

• La liste en question sera donc un paramètre lu et


modifié
par ces procédures de tri.

• Pour ce faire on n’utilisera pas de listes intermédiaires, les


tris se feront “sur place”.

7
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

a. But des algorithmes de tri.


Exemple

• La liste

7 5 14 4 10 2 8

• deviendra une fois triée :

2 4 5 7 8 10 14

8
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

a. But des algorithmes de tri.


Remarques

• Il s’agit d’un des plus problèmes les plus classiques


de l’algorithmique.

• De nombreuses résolutions sont possibles avec


des méthodes radicalement différentes.

9
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

a. But des algorithmes de tri.


Remarques

• Les plus acharnés pourront consulter la série de livres de


Donald Knuth “the art of computer programming” où plus
d’une trentaine d’algorithmes de tri sont étudiés en détail.

• Pour notre part, nous n’en étudierons que 5...

10
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

b. Méthodes utilisées.
Deux types d’algorithmes de tri étudiés dans ce module :

• Algorithmes itératifs.

• Algorithmes récursifs, basés sur le principe “diviser c’est


régner”, c’est-­‐à-­‐dire dans lesquels le tri d’une liste s’effectue
en la divisant plusieurs fois par deux jusqu’à obtention de
sous-­‐listes ne comportant qu’une seule valeur.

11
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

b. Méthodes utilisées.
Remarques

• Dans ce module de cours on se contentera juste de décrire


les algorithmes, et de les appliquer sur des exemples.

• Le travail d’implémentation de ces algorithmes en Python


sera fait lors de la prochaine séance Labs.

12
Le 11/10/2021 ZIDANE NORDINE
1. Généralités.

Fin de ce chapitre

Avez – vous des questions ?

13
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de tri.

2. ALGORITHMES ITÉRATIFS.

14
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs.

Plan de ce chapitre

a. Tri par sélection.


b. Tri à bulles.
c. Tri par insertion.

15
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Principe

•On cherche dans la liste la plus petite valeur et on la


permute avec le premier élément de la liste.
•On cherche ensuite la plus petite valeur à partir de la
deuxième case et on la permute avec le second élément de la
liste.

•Et ainsi de suite jusqu’à avoir parcouru tout la liste.

16
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple

• On considère la liste suivante de 5 entiers :

5 8 2 9 5

17
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple : 1 ère itération

• On détermine le minimum des éléments de la liste :


5 8 2 9 5

• Et on le permute avec le premier élément de la liste :


2 8 5 9 5

18
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple : 2 ème itération

• On détermine le minimum des éléments de la liste à partir


de la deuxième case :
2 8 5 9 5

• et on le permute avec le second élément de la liste :

2 5 8 9 5

19
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple : 3 ème itération

• On détermine le minimum des éléments de la liste à partir


de la troisième case :
2 5 8 9 5

• et on le permute avec le troisième élément de la liste :

2 5 5 9 8

20
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple : 4 ème itération

• On détermine le minimum des éléments de la liste à partir


de la quatrième case :
2 5 5 9 8

• et on le permute avec le quatrième élément de la liste :

2 5 5 8 9

21
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

a. Tri par sélection.


Exemple : fin

• Le cinquième élément la liste est de fait à sa place, le tri


est terminé :
2 5 5 8 9

22
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Principe

•On parcourt la liste en comparant chaque élément et


son successeur.
•Si ce dernier est plus petit on les permute.

•On réitère ce parcours de la liste jusqu’à qu’il n’y ait plus de


permutations à faire.

23
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple

• On considère la liste suivante de 5 entiers :

5 8 2 9 5

24
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 1 ère itération

• On compare 5 et 8 :

5 8 2 9 5

• Pas de permutation à faire.

5 8 2 9 5

25
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 1 ère itération

• On compare 8 et 2 :

5 8 2 9 5

• On les permute :

5 2 8 9 5

26
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 1 ère itération

• On compare 8 et 9 :

5 2 8 9 5

• Pas de permutation à faire.

5 2 8 9 5

27
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 1 ère itération (fin)

• On compare 9 et 5 :

5 2 8 9 5

• On les permute :

5 2 8 5 9

28
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 2 ème itération

• On compare 5 et 2 :

5 2 8 5 9

• On les permute :

2 5 8 5 9

29
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 2 ème itération

• On compare 5 et 8 :

2 5 8 5 9

• Pas de permutation à faire.

2 5 8 5 9

30
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 2 ème itération (fin)

• On compare 8 et 5 :

2 5 8 5 9

• On les permute :

2 5 5 8 9

31
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

b. Tri à bulles.
Exemple : 3 ème itération

• On parcourt de nouveau la liste, mais cette fois ci on


constate qu’il n’y a plus de permutations à effectuer.

• Pas de 4 ème itération, la liste est triée :

2 5 5 8 9

32
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


Principe

• On ordonne les deux premiers éléments de la liste.


• On insère le 3 ème élément de sorte que les trois premiers
éléments de la liste soient triés.

• On parcourt ainsi toute la liste en insérant sucessivement


chaque élément à sa “bonne” place dans la partie déjà
triée de la liste.

33
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


Exemple

• On considère la liste suivante de 5 entiers :

5 3 1 4 2

34
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


• On considère la valeur 3 :
5 3 1 4 2

• Que l’on “retire” provisoirement de la liste :


5 1 4 2

• On décale le 5 :
5 1 4 2

• Et on réinsère la valeur 3 :
3 5 1 4 2

35
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


• On considère la valeur 1 :
3 5 1 4 2

• Que l’on “retire” provisoirement de la liste :


3 5 4 2

• On décale le 3 et le 5 :
3 5 4 2

• Et on réinsère la valeur 1 :
1 3 5 4 2

36
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


• On considère la valeur 4 :
1 3 5 4 2

• Que l’on “retire” provisoirement de la liste :


1 3 5 2

• On décale le 5 :
1 3 5 2

• Et on réinsère la valeur 4 :
1 3 4 5 2

37
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


• On considère la valeur 2 :
1 3 4 5 2

• Que l’on “retire” provisoirement de la liste :


1 3 4 5

• On décale le 3, le 4 et le 5 :
1 3 4 5

• Et on réinsère la valeur 2 :
1 2 3 4 5

38
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs

c. Tri par insertion.


Exemple : fin

• Chaque élément a été inséré à sa place, le tri est terminé :

1 2 3 4 5

39
Le 11/10/2021 ZIDANE NORDINE
2. Algorithmes itératifs.

Fin de ce chapitre

Avez – vous des questions ?

40
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de tri.

3. ALGORITHMES RÉCURSIFS.

41
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs.

Plan de ce chapitre

a. Tri rapide.
b. Tri fusion.

42
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Principe

•On considère le premier élément de la liste et on le


positionne à sa place définitive, avec à sa gauche une sous-­‐
liste constituée d’éléments qui lui sont inférieurs ou et égaux
et à sa droite une sous-­‐liste constituée d’éléments qui lui
sont strictement supérieurs.
•On applique alors ce même traitement aux deux sous-­‐listes.
•Et ce de façon récursive jusqu’à obtenir des listes d’une
seule valeur.

43
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple

• On considère la liste suivant de 8 entiers :

7 5 14 4 10 2 12 16

44
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple : premier appel

• On va placer la valeur 7 :

7 5 14 4 10 2 12 16

4 5 2 7 10 14 12 16

45
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple : second appel

• On va placer les valeurs 4 et 10 :

4 5 2 7 10 14 12 16

2 4 5 7 10 14 12 16

46
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple : troisième appel

• On va placer les valeurs 2, 5 et 14 :

2 4 5 7 10 14 12 16

2 4 5 7 10 12 14 16

47
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple : quatrième appel

• On va placer les valeurs 12 et 16 :

2 4 5 7 10 12 14 16

2 4 5 7 10 12 14 16

48
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

a. Tri rapide.
Exemple : fin

• Tous les éléments de la liste ont été placés, le tri est


terminé :

2 4 5 7 10 12 14 16

49
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Principe

• À chaque appel récursif :


– On scinde la liste à trier en deux sous-­‐listes de même
taille (à un élément près).
– On trie chacune de ces deux sous-­‐listes.
– On fusionne les deux sous-­‐listes triées en une seule.

• La condition d’arrêt à la récursivité est l’obtention de listes


d’une seule valeur, et donc déjà triées.

50
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• On considère la liste suivante de 8 entiers :

7 5 14 4 10 2 8

51
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• On la scinde en deux sous-­‐listes :

7 5 14 4 10 2 8

7 5 14 4 10 2 8

52
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• Sous-­‐listes que l’on scinde à leur tour :

7 5 14 4 10 2 8

7 5 14 4 10 2 8

53
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• Sous-­‐listes que l’on scinde à leur tour :

7 5 14 4 10 2 8

7 5 14 4 10 2 8

54
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple
• Ces sous-­‐listes sont triées (elles n’ont qu’un élément), on
va maintenant les fusionner :

7 5 14 4 10 2 8

5 7 4 14 2 10 8

55
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• De nouveau une étape de fusionnnement :

5 7 4 14 2 10 8

4 5 7 14 2 8 10

56
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple

• Encore une fusion :

4 5 7 14 2 8 10

2 4 5 7 8 10 14

57
Le 11/10/2021 ZIDANE NORDINE
3. Algorithmes récursifs

b. Tri fusion.
Exemple : fin

• On a fusionné toutes les sous-­‐listes obtenues lors des


appels récursifs, le tri est terminé.

2 4 5 7 8 10 14

58
Le 11/10/2021 ZIDANE NORDINE
Titre du chapitre

Fin de ce chapitre

Avez – vous des questions ?

59
Le 11/10/2021 ZIDANE NORDINE
Algorithmes de
tri.
Autres structures de
données.

60
Le 11/10/2021 ZIDANE NORDINE

Vous aimerez peut-être aussi