Chapitre 25 | BTS | Mathématiques
Dernière mise à jour : 21 juin 2026
Notation Big-O : \(O(f(n))\) décrit la croissance asymptotique du nombre d'opérations selon la taille \(n\). On ne garde que le terme dominant : \(3n^2+5n+2\in O(n^2)\).
Pile (LIFO) : push / pop au sommet. File (FIFO) : enqueue à l'arrière, dequeue à l'avant.
Récursivité : fonction qui s'appelle elle-même, avec un cas de base (arrêt) et un appel sur un problème de taille strictement plus petite (sinon stack overflow).
| Algorithme | Meilleur | Moyen | Pire | Stable |
|---|---|---|---|---|
| Tri à bulles | \(O(n)\) | \(O(n^2)\) | \(O(n^2)\) | Oui |
| Tri par insertion | \(O(n)\) | \(O(n^2)\) | \(O(n^2)\) | Oui |
| Tri par sélection | \(O(n^2)\) | \(O(n^2)\) | \(O(n^2)\) | Non |
| Tri rapide | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n^2)\) | Non |
| Tri fusion | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n\log n)\) | Oui |
Python sort() | \(O(n)\) | \(O(n\log n)\) | \(O(n\log n)\) | Oui |
| \(O(1)\) | \(O(\log n)\) | \(O(n)\) | \(O(n\log n)\) | \(O(n^2)\) | \(O(2^n)\) |
|---|---|---|---|---|---|
| accès indice | dichotomie | parcours | tri rapide / fusion | tris simples | Fibonacci naïf |
collections.deque (popleft en \(O(1)\)).sorted().❌ Lancer une recherche dichotomique sur un tableau non trié.
✅ La dichotomie exige un tableau trié, sinon le résultat est faux.
❌ Utiliser list.pop(0) dans une boucle pour gérer une file.
✅ C'est \(O(n)\) par appel (\(O(n^2)\) au total) : utiliser collections.deque et popleft().
❌ Utiliser la version récursive naïve de Fibonacci pour de grands \(n\).
✅ Elle est en \(O(2^n)\) : préférer l'itératif ou la mémoïsation (\(O(n)\)).
❌ Oublier le cas de base d'une fonction récursive.
✅ Sans condition d'arrêt, on provoque une récursion infinie (stack overflow).