Vous êtes sur la page 1sur 13

Université Abdelmalek Essaâdi

Faculté des Sciences et Techniques d’Al-Hoceima

Département de Mathématiques et
Informatique
Filière : MIP – S4
Année universitaire : 2021- 2022

Module M22 : Structures de données en C

Chapitre 2 : Techniques de
programmation et les listes

Pr. Abderrahim zannou


a.zannou@uae.ac.ma

Pr . A. Zannou 1 FST d’ Al-Hoceima


Techniques de programmation
• Algorithme de tri

 Un algorithme de tri est, en informatique ou en mathématique est une


opération de classement d'éléments (les données) d'une liste selon un
ordre total défini.
 les données peuvent être des entiers, des flottants, des mots, des
structures complexes, ...
 Les ordres les plus utiles sont l’ordre numérique et l’ordre
lexicographique.

2
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par sélection

 Tri par sélection


Principe: L’algorithme de tri associé au tri par sélection consiste à trouver
l’emplacement du plus petit élément dans un tableau. Dès que cet élément
est trouvé, nous l’inter changeons avec le premier élément du tableau (i=0).
Nous recommençons l’opération pour le reste du tableau (i.e. i = [1, N [ ; N
étant la taille du tableau).

3
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par sélection

 Tri par sélection


Algorithme: Table T de la taille N, tri dans l’ordre croissant. N-1
1. Pour i de 0 à N-2 faire 0 1 2 3 4
2. k ←i 9 5 4 7 2
3. Pour j de i+1 à N-1
4. Si T[j]<T[k] alors
5. k←j
6. FinSi
7. Finpour
8. tmp=T[k]
9. T[k]=T[i]
10. T[i]=tmp
11. Finpour

4
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par sélection

 Tri par sélection


Complexité:
 À chaque itération, on considère l’élément tableau[i] et on le compare
successivement à tableau[i+1], ..., tableau[N]. On fait donc N-i
comparaisons.
 Le nombre total de comparaisons est donc de :

N 1
N(N  1)
N i 
i 1 2

 En ce qui concerne sa complexité, on dit que le tri par sélection est


en O(N^2), à la fois dans le meilleur des cas, en moyenne et dans le pire
des cas, c’est-à-dire que son temps d’exécution est de l’ordre du carré du
nombre d’éléments à trier.

5
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri à bulles

 Tri à bulles
Principe: Le tri à bulles est une variante du tri par sélection. Son principe
consiste à échanger deux éléments consécutifs qui ne sont pas ordonnés
d’un tableau donné. Après ce parcours l’élément le plus grand va se
retrouver en dernier. Nous recommençons l’opération avec les N-1 éléments
du tableau [0, N-1[.

6
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri à bulles

 Tri à bulles
Algorithme: Table T de la taille N, tri dans l’ordre croissant. N-1
1. Faire 0 1 2 3 4
2. permute=faux 9 5 4 7 2
3. Pour i ←0 à N-2 faire
4. Si T[i]>T[i+1] alors
5. échanger(T[i], T[i+1])
6. permute=vrai
7. FinSi
8. FinPour
9. Tantque(permute=vrai)

7
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri à bulles
 Tri à bulles
Complexité:
 Le nombre de comparaisons dans la procédure de tri à bulle est le même que
N 1
N(N  1)
pour le tri par sélection : N i 
i 1 2
 Le nombre d’échanges quant à lui dépend de l’ordre des éléments dans le
tableau :
 dans le meilleur des cas, le tableau initial est trié et il n’y a pas d’échange à
faire ;
 en moyenne, on montre que le nombre d’échanges est de :
N(N  1)
4
 Dans le pire des cas, les entiers du tableau sont initialement donnés dans
l’ordre décroissant. Dans ce cas, on effectue l’échange à chaque
N(N  1)
comparaison, c’est-à-dire que le nombre d’échanges est alors de : 2
 Quoi qu’il en soit, la complexité du tri bulle reste en O(N^2), c’est-à-dire du
même ordre de grandeur que le carré du nombre d’éléments.
8
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par insertion

 Tri par insertion


Principe: L’algorithme du tri par insertion repose sur le même principe que

la technique utilisée pour trier un paquet de cartes. Ayant i-1 cartes déjà
triées, on essaye de mettre la i de carte à sa place dans le paquet déjà trié.
Ainsi de suite jusqu’à i=N, le nombre de cartes. La variable m représente
l’index de la case où l’élément sera inséré. La variable i représente l’index de
l’élément en cours de traitement.

9
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par insertion

 Tri par insertion


Algorithme: Table T de la taille N, tri dans l’ordre croissant. N-1
1. Pour i de 1 à N-1 faire 0 1 2 3 4
2. tmp ← T[i] 9 5 4 7 2
3. j←i
4. Tant que j>0 et T[j-1]>tmp
5. T[j] ←t[j-1]
6. j←j-1
7. FinTantque
8. T[j]=tmp
9. Finpour

10
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par insertion

 Tri par insertion


Complexité:
 La comparaison avec les deux algorithmes précédents montre que la
complexité du tri par insertion est plus fortement dépendante de l’ordre
du tableau initial. Nous comptons ici le nombre de comparaisons (qui est
le nombre de décalages à un près) :
 dans le meilleur des cas, le tableau initial est trié et on effectue alors
une comparaison à chaque insertion, on effectue donc N-1
comparaisons ;
 en moyenne, on montre que le nombre de comparaisons est de :

N(N  1)
N 1
4

11
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par insertion

 Dans le pire des cas, les entiers du tableau sont initialement donnés
dans l’ordre décroissant. Dans ce cas, on effectue l’échange à chaque
comparaison, c’est-à-dire que le nombre d’échanges est alors de
N(N  1)
2
 Contrairement aux tris par sélection et bulle qui nécessitent un nombre
constant de comparaisons, le tri par insertion ne conduit qu’à très peu de
comparaisons lorsque le tableau initial est presque en ordre. Ce tri a donc
de meilleures propriétés.

12
Pr . A. Zannou FST d’ Al-Hoceima
Techniques de programmation
• Algorithme de tri : Tri par fusion

 Tri par fusion


Principe: Le tri par fusion est construit suivant la stratégie « diviser pour
régner ». Il est souvent plus facile de diviser un gros problème en petits
problèmes élémentaires, ensuite ile ne reste qu’a combiner les différentes
solutions de ces derniers. Il est préférable de trier deux sous tableaux, puis
de combiner les résultats. Etapes de l’algorithme :
 Diviser l’ensemble des valeurs en deux parties,
 Trier chacun des deux ensembles,
 Fusionner les deux ensembles

13
Pr . A. Zannou FST d’ Al-Hoceima

Vous aimerez peut-être aussi