Première NSI Mme Pierrot
Le tri par sélection
Thème :
• Les algorithmes de tri
• Notion de compléxité
Compétences à acquérir :
• utilisation de boucles imbriquées
• savoir dérouler un algorithme pas à pas
Éléments d’information et exemples.
Sitographie :
Select-sort with Gypsy folk dance : https://www.youtube.com/watch?v=Ns4TPTC8whw&t=7s
Des animations pour comprendre les algorithmes de tri : http://lwh.free.fr/pages/algo/tri/tri.htm Doc.1 : Algorithme du tri par sélection
FONCTION tri_par_selection (liste)
POUR i VARIANT DE 0 à ………. FAIRE indicedumin PREND LA VALEUR i
POUR j VARIANT DE ………. À len(liste)-1 FAIRE SI liste(j) < liste(indicedumin) ALORS FAIRE indicedumin PREND LA VALEUR ……….
FINSI FINPOUR
……….
FINPOUR RENVOYER liste
Doc.2 : Tableau des valeurs à chaque étape
(juste après le FINSI)
i j indicedumin liste
Travail à réaliser
I- Programmation
1) Regarder la vidéo proposée sur YouTube qui illustre l’algorithme du tri par sélection 2) Compléter l’algorithme proposé dans le doc.1
3) Tester cet algorithme manuellement pour deux exemples de listes : [4, 5, 1, 3] puis une de votre choix.
4) Coder l’algorithme en Python.
5) Le tester avec une liste aléatoire de 50 entiers.
II- Notion de complexité
1) De la même façon que sur cette page : http://lwh.free.fr/pages/algo/tri/tri_selection.html lors du tri par sélection de tonneaux on compte le nombre de comparaisons et de déplacements effectués lors d’un tri des tonneaux, comptabiliser le nombre de comparaisons et de déplacements effectués lors d’un tri des listes de cinq nombres suivantes : [4,1,5,2,3] ; [1,2,3,4,5] ; [5,4,3,2,1]
2) Que remarque-t-on pour le nombre de comparaisons ? Quelle est la meilleur configuration initiale ? La pire ? Pourquoi ?
3) Pour cet algorithme on parle d’une complexité en Θ(n2) … sauriez-vous dire pourquoi ?