PrepaMaths mesure son audience de façon anonyme, sans cookie. Acceptes-tu les cookies d'analyse pour nous aider à améliorer l'app ? En savoir plus

Vidéo Premium
Débloquer avec Premium3:30
L'analyse de la complexité permet de comparer l'efficacité des algorithmes indépendamment de la machine utilisée. On distingue :
Définition. Soit . On écrit s'il existe et tels que :
On utilise aussi :
| Complexité | Nom | Exemple | |-----------|-----|---------| | | Constante | Accès à un élément de liste par indice | | | Logarithmique | Recherche dichotomique | | | Linéaire | Parcours d'une liste | | | Quasi-linéaire | Tri fusion | | | Quadratique | Tri par insertion (pire cas) | | | Exponentielle | Sous-ensembles d'un ensemble |
Pour un algorithme donné, on distingue :
En CPGE, on s'intéresse le plus souvent à la complexité dans le pire cas.
Définition. Un variant de boucle est une quantité entière, positive, qui décroît strictement à chaque itération. Son existence prouve que la boucle termine.
Exemple : dans la recherche dichotomique, le variant est (différence entre les bornes droite et gauche).
Définition. Un invariant de boucle est une propriété qui est vraie avant la boucle, et qui reste vraie après chaque itération.
Exemple : pour le calcul de par une boucle :
```python def factorielle(n): r = 1 for i in range(1, n + 1): r = r * i # Invariant : à l'entrée du tour i, r = (i-1)! return r ```
L'invariant est : au début de l'itération , on a . Après la dernière itération (), on obtient .