Algorithmes de tri (partie 2) Algorithmes de tri (partie 2) TS spé ISN lycée Les Eaux Claires 11 janvier 2017 Algorithmes de tri (partie 2) 1 1) Le tri à bulles : analyse 2 2) Conséquences 3 3) Travail Algorithmes de tri (partie 2) 1) Le tri à bulles : analyse 1 1) Le tri à bulles : analyse 2 2) Conséquences 3 3) Travail Algorithmes de tri (partie 2) 1) Le tri à bulles : analyse Premier parcours du tableau On obtient successivement 6 4 9 17 2 4 4 6 9 17 2 4 4 6 9 17 2 4 4 6 9 17 2 4 4 6 9 2 17 4 4 6 9 2 4 17 Algorithmes de tri (partie 2) 1) Le tri à bulles : analyse Analyse(1) Après un premier parcours du tableau, le nombre le plus grand occupe la dernière position Il n’est donc plus nécessaire de chercher à trier le tableau complet : le tri va donc porter sur les (N − 1) premiers éléments du tableau 4 6 9 2 4 17 Algorithmes de tri (partie 2) 1) Le tri à bulles : analyse Second parcours du tableau On obtient successivement 4 6 9 2 4 17 4 6 9 2 4 17 4 6 9 2 4 17 4 6 2 9 4 17 4 6 2 4 9 17 Algorithmes de tri (partie 2) 1) Le tri à bulles : analyse Analyse(2) Après un second parcours du tableau, les deux dernières positions sont occupées par les deux nombres le splus grands Il reste à trier les (N − 2) premiers éléments du tableau 4 6 2 4 9 17 Algorithmes de tri (partie 2) 2) Conséquences 1 1) Le tri à bulles : analyse 2 2) Conséquences 3 3) Travail Algorithmes de tri (partie 2) 2) Conséquences Arrêt de l’algorithme La taille de tableau restant à trier diminue lors de chaque nouvelle itération : l’algorithme va donc s’arrêter Algorithmes de tri (partie 2) 2) Conséquences Objectif atteint Lors de chaque nouvelle itération, on observe qu’un nouvel élément (au moins) va occuper sa ’bonne’ place Le tableau contient N éléments : après N itérations, l’algorithme permet donc bien d’obtenir un tableau complètement trié. Algorithmes de tri (partie 2) 2) Conséquences Nombre de comparaisons Nombre de comparaisons : Lors du premier parcours du tableau, (N − 1) comparaisons ont été effectuées Lors du second parcours du tableau, (N − 2) comparaisons ... Lors du dernier parcours du tableau, une seule comparaison Le nombre total de comparaisons est donc égal à : (N − 1) + (N − 2) + ... + 2 + +1 donc Algorithmes de tri (partie 2) 2) Conséquences Nombre de comparaisons Nombre de comparaisons : Lors du premier parcours du tableau, (N − 1) comparaisons ont été effectuées Lors du second parcours du tableau, (N − 2) comparaisons ... Lors du dernier parcours du tableau, une seule comparaison Le nombre total de comparaisons est donc égal à : (N − 1) + (N − 2) + ... + 2 + +1 donc 1 × N × (N − 1) 2 comparaisons Algorithmes de tri (partie 2) 2) Conséquences Nombre d’échanges Au minimum : Algorithmes de tri (partie 2) 2) Conséquences Nombre d’échanges Au minimum : Aucun échange (tableau déjà trié) Au maximum : Algorithmes de tri (partie 2) 2) Conséquences Nombre d’échanges Au minimum : Aucun échange (tableau déjà trié) Au maximum : Autant d’échanges que de comparaisons ... En moyenne : ? ? ? Algorithmes de tri (partie 2) 2) Conséquences Complexité de l’algorithme Le nombre d’opérations est donc proportiel à N 2 . On dit que la complexité de cet algorithme est de l’ordre de N 2 En particulier : si le nombre d’éléments est multiplié par 10, le nombre d’opérations sera multiplié par 100 si le nombre d’éléments est multiplié par 100, le nombre d’opérations sera multiplié par 10 000 ... Algorithmes de tri (partie 2) 3) Travail 1 1) Le tri à bulles : analyse 2 2) Conséquences 3 3) Travail Algorithmes de tri (partie 2) 3) Travail Ecrire une nouvelle version de l’algorithme en utilisant ce qui a été observé aujourd’hui (taille du tableau ... ) Programmer en langage Python cet algorithme amélioré Exécuter successivement les deux programmes utilisant l’algorithme à bulles sur un même tableau aléatoire de N nombres entiers et comparer les temps d’exécutions et les nombres d’opérations effectuées Prendre N = 1000, puis N = 100000, ...