50 lines
1.8 KiB
Markdown
50 lines
1.8 KiB
Markdown
|
|
# 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 ?
|