0% ont trouvé ce document utile (0 vote)
60 vues2 pages

Fiche-15 - Algorithme de Tri

Le document traite de l'importance du tri des données et de la complexité des algorithmes de tri. Il présente différentes complexités algorithmiques, allant de O(1) à O(n!), et fournit des exemples d'algorithmes de tri, notamment le tri à bulle. Des exercices pratiques sont proposés pour appliquer ces concepts à l'aide de scripts Python.

Transféré par

Laurent Kant
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues2 pages

Fiche-15 - Algorithme de Tri

Le document traite de l'importance du tri des données et de la complexité des algorithmes de tri. Il présente différentes complexités algorithmiques, allant de O(1) à O(n!), et fournit des exemples d'algorithmes de tri, notamment le tri à bulle. Des exercices pratiques sont proposés pour appliquer ces concepts à l'aide de scripts Python.

Transféré par

Laurent Kant
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Spécialité NSI

Algorithme de tri
Complexité

1- Pourquoi trier des données ?

Trier des données consiste à les organiser selon un ordre (croissant, alphabétique, etc.). Nous considèrerons des
données présentes dans un tableau (généralement une liste en python).

C’est indispensable pour :

 Rechercher rapidement dans un dictionnaire (tri alphabétique),


 Afficher les produits du moins chers au plus cher sur un site e-commerce,
 Analyser des données (statistiques, graphiques, classement),
 Rendre les recherches plus efficaces.

2- La complexité d’un algorithme

Plusieurs stratégies existent pour trier des tableaux. On peut déterminer leur efficacité grâce au calcul de la
complexité. Cela correspond à la quantité de ressources nécessaires à l’exécution du programme.

Il se caractérise généralement par une fonction dépendant du nombre de valeurs présentes dans un tableau. :
 constante, O(1), si le temps de calcul est toujours le même, quel que soit le nombre d’éléments
 logarithmique, O(log n), si le temps de calcul est proportionnel au logarithme du nombre d’éléments
 linéaire, O(n), si le temps de calcul est proportionnel au nombre d’éléments
 linéarithmique, O(n log n), si le temps de calcul est proportionnel au nombre d’éléments multiplié par le logarithme du
nombre d’éléments.
 quadratique, O(n²), si le temps de calcul et proportionnel au carré du nombre d’éléments
 exponentielle, O(2^n), si le temps de calcul est proportionnel à 2 exposant le nombre d’éléments
 factorielle, O(n!), si le temps de calcul et proportionnel à n!

Temps d'exécution en fonction de la complexité algorithmique


Complexité n n log₂ n n² 2ⁿ n!
n = 10 <1s <1s <1s <1s 4s
n = 30 <1s <1s <1s 18 min 10²⁵ ans
n = 50 <1s <1s <1s 36 ans ∞
n = 100 <1s <1s <1s 10¹⁷ ans ∞
n = 1000 <1s <1s 1s ∞ ∞
n = 10000 <1s <1s 2 min ∞ ∞
n = 100000 <1s 2s 3 heures ∞ ∞
n = 1000000 1 s 20 s 12 jours ∞ ∞

En l’état actuel des connaissances, les meilleurs algorithmes de tri ont une complexité O(n log n).
3- Travail proposé :

3.1 En vous aidant de l’application test algo tri.html : Exemple d’algorithme (HS ici)
Entrée : une liste T de n éléments
 Inventer une méthode pour trier ces cartes. Sortie : la liste T triée en ordre croissant
 En vous inspirant de l’exemple ci-contre, donner un
algorithme correspondant à la façon précise dont vous vous Pour i allant de 0 à n
Pour j allant de 0 à n
y êtes pris pour effectuer ce tri.
Si T[j] > T[j + 1] alors
échanger T[j] et T[j + 1]
Fin Si
Fin Pour
Fin Pour

3.2 Visualiser la vidéo sur la méthode du tri à bulle : https://www.youtube.com/watch?v=Iv3vgjM8Pv4

Youtube  Bubble sort with Hungarian, folk dance

Cette méthode de tri consiste à inverser tous les couples de nombres non ordonnés. À la fin de la première
boucle, le plus grand élément du tableau sera forcément bien placé. Puis, l’algorithme recommence
jusqu’à la fin du tri.

3.3 Faites fonctionner le script python tri bulle.py.

 Valider son fonctionnement avec différentes tailles de liste.


 Ajouter des commentaires sur chacune des lignes de la fonction pour justifier leur action.
 Tester le tri d’une liste contenant des chaines de caractères.

3.4 Faites fonctionner le script python tri bulle complexité.py.

 Ajouter une variable permettant de compter le nombre de permutations lors d’un tri.
 Démontrer que la complexité est quadratique (en n²). Expliquer votre démarche.

3.5 Prenez connaissance du fichier tri_selection.pdf.

 Testez cet algorithme avec l’application test algo tri.html.


 Rédiger un script python utilisant cet algorithme. Le tester et commenter les lignes du code.
 Déterminer son type de complexité en reprenant la méthode vue à la question 3.4.

3.6 Aidez-vous du fichier tri_insertion.pdf pour rédiger un script python utilisant cet algorithme. Le tester et
commenter les lignes du code. Déterminer son type de complexité en reprenant la méthode vue à la
question 3.4

Vous aimerez peut-être aussi