Listes chaînées : comparaison liste vs dictionnaire (BO)

This commit is contained in:
2026-06-18 18:48:45 +02:00
parent ad9dde3486
commit 8bbb7f7800

View File

@@ -205,6 +205,49 @@ C'est précisément ce que vous allez implémenter dans le chapitre suivant.
---
## 7. Liste chaînée vs dictionnaire : deux façons de chercher
La liste chaînée et le dictionnaire stockent tous les deux des données, mais la **recherche** fonctionne très différemment.
### Dans une liste chaînée : on parcourt
Pour savoir si "Florizarre" est dans la liste, on doit visiter les maillons un par un jusqu'à le trouver (ou arriver à `None`) :
```python
l.rechercher("Florizarre")
# Bulbizarre → Herbizarre → Florizarre ✓ (3 étapes)
```
Dans le pire cas (valeur absente ou en fin de liste), on parcourt **tous les maillons** : c'est **O(n)**.
### Dans un dictionnaire : on accède directement
Un dictionnaire associe chaque valeur à une **clé**. L'accès par clé est direct, quelle que soit la taille du dictionnaire :
```python
pokedex = {
"Bulbizarre": {"type": "Plante", "pv": 45},
"Herbizarre": {"type": "Plante", "pv": 60},
"Florizarre": {"type": "Plante", "pv": 80},
}
pokedex["Florizarre"] # accès direct, pas de parcours
```
Peu importe qu'il y ait 3 ou 3 000 entrées : l'accès est toujours **O(1)**.
### Comparaison
| | Liste chaînée | Dictionnaire |
|---|---|---|
| Recherche d'une valeur | O(n) — parcours maillon par maillon | O(1) — accès direct par clé |
| Ordre des éléments | Conservé (chaîne de maillons) | Non garanti |
| Usage naturel | Séquence à modifier souvent | Recherche rapide par identifiant |
> **À retenir** : si on a besoin de retrouver souvent un élément par son identifiant (un nom, un id…), le dictionnaire est nettement plus efficace qu'une liste chaînée. Si on a besoin de maintenir un ordre et de faire des insertions/suppressions fréquentes, la liste chaînée est mieux adaptée.
---
Auteur : Florian Mathieu
Licence CC BY NC