Algorithmes de tri (partie 2) - [andresmaths.free.fr] Cahier de texte

publicité
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, ...
Téléchargement