From 8bbb7f7800d4975267e607e91ba8d319507166a0 Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Thu, 18 Jun 2026 18:48:45 +0200 Subject: [PATCH] =?UTF-8?q?Listes=20cha=C3=AEn=C3=A9es=20:=20comparaison?= =?UTF-8?q?=20liste=20vs=20dictionnaire=20(BO)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Listes_chainees/README.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Structures_lineaires/Listes_chainees/README.md b/Structures_lineaires/Listes_chainees/README.md index 2158661..f469a30 100644 --- a/Structures_lineaires/Listes_chainees/README.md +++ b/Structures_lineaires/Listes_chainees/README.md @@ -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