La complexité d’un algorithme

1. Qu’est-ce que la complexité d’un algorithme ?

La complexité d’un algorithme est une mesure de la quantité de ressources (temps, mémoire) que l’algorithme utilise en fonction de la taille de l’entrée.

Pourquoi s’intéresser à la complexité ?


2. Notion de taille d’entrée

La complexité est souvent exprimée en fonction de la taille de l’entrée, notée n.


3. Comment mesurer la complexité ?

On compte le nombre d’opérations élémentaires effectuées par l’algorithme en fonction de n (par exemple, comparaisons, additions).

Attention : On ne mesure pas le temps en secondes, car cela dépend de l’ordinateur, mais on cherche une estimation abstraite.


4. La notation Big O (Grand O)

La notation Big O (ou notation asymptotique) permet d’exprimer la complexité en se concentrant sur la croissance de l’algorithme quand n devient très grand, en ignorant les constantes et les termes de moindre importance.

Par exemple, si un algorithme fait :


5. Les différentes complexités classiques

Voici les principales classes de complexité qu’on retrouve en algorithmique :

ComplexitéDescriptionExemplesCroissance (approximative)
O(1)Temps constantAccès à une case de tableauIndépendant de n
O(log n)Temps logarithmiqueRecherche dichotomiqueCroît très lentement
O(n)Temps linéaireParcourir un tableauCroît proportionnellement à n
O(n log n)Temps quasi-linéaireTri fusion, tri rapidePlus lent que O(n) mais efficace
O(n²)Temps quadratiqueTri à bulle, tri insertion (pire cas)Croît très vite avec n
O(2n)O(2^n)Temps exponentielRésolution de certains problèmes complexes (ex: certaines combinaisons)Devient très vite énorme

Illustration graphique :


6. Exemples concrets


7. Cas meilleur, pire et moyen

Souvent on s’intéresse au pire cas pour garantir la performance.


8. Pourquoi la complexité est importante au bac NSI ?