Cours 5 - Trois algorithmes de tri d'un tableau
Cours 5 - Trois algorithmes de tri d'un tableau 1 - Introduction Dans ce chapitre, on considère que : on manipule des données de type Élément; le type Élément respecte un ordre (Ex: entiers, chaussures…); on a défini un type Tab décrivant un tableau de taille N et contenant des Élément. Tab: type tableau[1..N] de Élément; Problème : comment trier en ordre croissant les éléments d'un tableau? problème classique et très utilisé; beaucoup d'algorithmes existent; nous détaillons trois algorithmes simples. Pour résoudre ce problème, nous allons écrire une procédure procédure tri(R t:Tab) qui réalise le tri du tableau t en ordre croissant.
Cours 5 - Trois algorithmes de tri d'un tableau Problème : comment trier en ordre croissant les éléments d'un tableau? 12 17 -883 1 87 157 166 54 1823 17 33 80 1020 899 -58 13 21 20 -105 9 41 157 64 732 1501 367 31 11 90 2433 166 2138 772 806 -2 2 521 130 100 71 définir une suite d'opérations précise pour trier un ensemble d'éléments
Cours 5 - Trois algorithmes de tri d'un tableau Principe : rechercher le plus petit élément de la partie non triée du tableau; échanger cet élément avec le premier de la partie non triée du tableau; répéter ces opérations N fois. 2 – Tri par sélection 12 33 43 51 98 103 12 33 43 51 98 103 12 33 43 51 98 103 12 33 43 51 98 103 12 33 103 51 98 43 98 43 103 51 12 33 12 33 103 51 98 43 12 43 103 51 98 33 12 43 103 51 98 33 12 33 43 51 98 103 98 43 103 51 12 33 12 33 43 51 98 103
Cours 5 - Trois algorithmes de tri d'un tableau Principe : rechercher le plus petit élément de la partie non triée du tableau; échanger cet élément avec le premier de la partie non triée du tableau; répéter ces opérations N fois. 2 – Tri par sélection Amélioration?
Nb comparaisons = (N - 1) + (N - 2) + … + 1 Calcul de la complexité au pire des cas en nombre de comparaisons N-1 comparaisons pour la 1ère recherche du minimum, N-2 comparaisons pour la 2ème, N-3 comparaisons pour la 3ème, … 1 comparaison pour la dernière recherche. Nb comparaisons = (N - 1) + (N - 2) + … + 1 = N * (N- 1) / 2 ~ N2 en nombre de permutations à chaque recherche du minimum on effectue une permutation Nb permutations = N – 1 ~N Le tri par sélection s'effectue avec, au pire des cas: N2 comparaisons N permutations
Cours 5 - Trois algorithmes de tri d'un tableau Principe : parcourir la partie à trier du tableau depuis la fin jusqu'au début; chaque fois que 2 éléments consécutifs ne sont pas dans le bon ordre, les échanger; répéter N fois ce parcours. 3 – Tri à bulles 98 12 43 103 51 33 12 98 43 103 51 33 98 43 12 103 51 33 98 12 43 103 51 33 98 43 103 12 51 33 98 43 103 51 12 33 98 43 103 51 12 33 98 43 103 12 51 33 98 43 12 103 51 33
Cours 5 - Trois algorithmes de tri d'un tableau Principe : parcourir la partie à trier du tableau depuis la fin jusqu'au début; chaque fois que 2 éléments consécutifs ne sont pas dans le bon ordre, les échanger; répéter N fois ce parcours. 3 – Tri à bulles Amélioration?
Calcul de la complexité au pire des cas en nombre de comparaisons N-1 comparaisons pour remonter le 1èr minimum, N-2 comparaisons pour remonter le 2ème, N-3 comparaisons pour remonter le 3ème, … 1 comparaison pour remonter le dernier. Nb comparaisons = (N - 1) + (N - 2) + … + 1 = N * (N- 1) / 2 ~ N2 en nombre de permutations au pire, à chaque comparaison on effectue une permutation Nb permutations = Nb comparaisons ~N² Le tri à bulles s'effectue avec, au pire des cas: N² comparaisons N² permutations
Cours 5 - Trois algorithmes de tri d'un tableau Principe : considérer le premier élément de la partie non triée du tableau; l'insérer à sa place dans la partie triée; répéter ces opérations N fois. 4 – Tri par insertion 43 98 103 12 33 43 98 103 12 33 43 51 98 103 12 33 43 98 103 12 33 43 98 103 51 12 33 43 51 98 103 12 33 43 98 103 51 12 33 98 43 103 51 12 33 98 43 103 51 12 33 98 103 51 12 33 98 103 51 12 33 43 98 103 51 12 33 43 98 103 51 12 33
Cours 5 - Trois algorithmes de tri d'un tableau Principe : considérer le premier élément de la partie non triée du tableau; l'insérer à sa place dans la partie triée; répéter ces opérations N fois. 4 – Tri par insertion Amélioration?
Nb comparaisons = (2+3+4+…+N)*2 Nb affectations = 3+4+5+…+(N+1) Calcul de la complexité au pire des cas en nombre de comparaisons 2 fois la ligne de test pour t[2], 3 fois la ligne de test pour t[3], 4 fois la ligne de test pour t[4], … N fois la ligne de test pour t[N], Nb comparaisons = (2+3+4+…+N)*2 ~ N2 en nombre d'affectations au pire, à la première étape on effectue 3 affectations, puis 4 à la seconde, 5 à la troisième… Nb affectations = 3+4+5+…+(N+1) ~N² Le tri par insertion s'effectue avec, au pire des cas: N² comparaisons N² affectations