# 03 — Le Podium **Algorithme :** Tri par sélection **Difficulté :** Facile **Durée estimée :** 45 min — 1h --- ## Contexte Vous gérez le classement d'une compétition de sprint. Vous devez trier les athlètes par **temps croissant** (le plus rapide en premier) et afficher le podium. Le tri par sélection fonctionne comme un vrai classement : à chaque étape, on cherche le meilleur parmi tous les restants et on le place en tête. --- ## Étapes ### Étape 1 — Implémenter `tri_selection_athletes(athletes)` La liste `athletes` contient des dictionnaires `{"nom": ..., "pays": ..., "temps": ...}`. Il faut trier par `temps` croissant (le plus petit temps = le plus rapide). > **Indication** : dans le tri par sélection, au lieu de comparer `tab[j] < tab[mini]`, vous comparerez `athletes[j]["temps"] < athletes[mini]["temps"]`. ### Étape 2 — Afficher le podium Implémentez `afficher_podium(athletes_tries)` qui affiche les 3 premiers avec un podium en ASCII. ``` 1er +---+ 2e 3e | | +---+ +---+ | 1 | | 2 | | 3 | | | | | | | +---+ +---+ +---+ Alice (FR) Bob (USA) Carla (BR) 9.85 s 9.91 s 9.97 s ``` ### Étape 3 — Recherche dichotomique Après le tri, créez une liste des temps uniquement. Implémentez `temps_atteint(temps_liste, t)` qui utilise la dichotomie pour dire si un temps exact a été réalisé lors de la compétition. ### Étape 4 — Extension (si vous avez le temps) Affichez aussi le classement complet sous forme de tableau numéroté. --- ## Ce que vous devez rendre - Le programme qui trie et affiche le podium - Réponse : pourquoi le tri par sélection fait-il **moins de déplacements** que le tri par insertion ?