📘 Fiche de cours
L'essentiel du cours
La complexité algorithmique permet d'évaluer l'efficacité d'un algorithme en termes de temps (temporelle) et d'espace (spatiale). On utilise la notation de Landau, notée $O(f(n))$, où $n$ est la taille des données en entrée.
- $O(1)$ : Temps constant (accès direct).
- $O(\log n)$ : Temps logarithmique (recherche dichotomique).
- $O(n)$ : Temps linéaire (parcours d'une liste).
- $O(n^2)$ : Temps quadratique (boucles imbriquées).
Méthodes à maîtriser
- Compter les opérations : Identifier les boucles et les instructions élémentaires.
- Identifier le pire cas : Analyser la situation où l'algorithme effectue le maximum d'opérations.
- Simplifier : Garder uniquement le terme dominant et ignorer les constantes multiplicatives (ex: $O(3n + 5) = O(n)$).
Exemples corrigés
Exemple 1 : Une boucle simple for i in range(n): print(i) est en $O(n)$.
Exemple 2 : Deux boucles imbriquées for i in range(n): for j in range(n): ... est en $O(n^2)$.
Erreurs fréquentes
- Confondre le nombre d'opérations exact avec l'ordre de grandeur (Grand O).
- Oublier que les opérations constantes à l'intérieur d'une boucle ne changent pas la complexité globale.
- Négliger le cas où $n$ tend vers l'infini.