@ -78,6 +78,11 @@ Les variables d'intérêt pour l'analyse de la complexité sont généralement l
Ce sont des opérations de base, comme l'addition, l'affectation, la comparaison, etc., qui ont un coût constant, noté \( O(1) \).
Dans le calcul, on suppose que le coût de chaque instruction élémentaire est le même. Elles ont un réel impact lorsqu'elles sont exécutées un grand nombre de fois, comme dans les **boucles***(for, while)* ou les **appels récursifs**.
Il peut s'agir des opérateurs d'**affectation** (=) ou d'**opération** (+ - * / > >= <= < and or), ainsi que les fonctions natives comme len ou range. Celles-ci compte **+1** à chaque apparition.
> +0 pour def, for, while, if, else ou return
> +2 pour les opérateurs comme +=, -=, etc...
Ne pas oublié de prendre en compte si certaines instructions sont incluses dans des boucles !
## Calcul de la Complexité
@ -94,8 +99,8 @@ Dans le calcul, on suppose que le coût de chaque instruction élémentaire est
```python
def triBulles(T):
for i in range(len(T)-1, 0, -1): # Boucle extérieure
for j in range(i): # Boucle intérieure
for i in range(len(T)-1, 0, -1): # Boucle extérieure (+2)
for j in range(i): # Boucle intérieure (+1)
if T[j+1] <T[j]:#Comparaison+4(car2accèsàuntableau,unecomparaisonetuneaddition)
tmp = T[j] # Affectation +2 (un accès et une affectation "=")
T[j] = T[j+1] # Affectation +4 (2 accès, une affectation et une addition)
@ -119,7 +124,7 @@ En réalité le calcul nous donne:
> Car on ne s'intéresse qu'au terme dominant, c'est-à-dire le terme qui croît le plus rapidement en fonction de la taille de l'entrée. Les autres termes sont négligés car ils deviennent insignifiants lorsque la taille de l'entrée devient grande.
Au final la représentation avec matplotib donne quasiment la même chose: