Python (école d'ingénieur) · Chapitre 6 · Exercice
Comptage d'opérations élémentaires
Complexité algorithmique
Énoncé
Pour chacune des fonctions suivantes, déterminer le nombre exact d'opérations élémentaires (additions, comparaisons, affectations) en fonction de , puis donner la complexité asymptotique .
def max_liste(L):
max_val = L[0]
for x in L:
if x > max_val:
max_val = x
return max_val
def somme_pairs(n):
s = 0
for i in range(2, n+1, 2):
s += i
return s
def mystere(n):
i, j = 1, 1
while i <= n:
j = 1
while j <= n:
j += 1
i += 1Corrigé
Analysons chaque fonction :
- Fonction
max_liste(L)avec :
- Initialisation :
max_val = L[0](1 accès, 1 affectation).
- Boucle
for: itérations.
- À chaque itération : 1 accès à
x, 1 comparaisonx > max_val.
- Si la condition est vraie : 1 affectation
max_val = x.
- Retour :
return max_val(1 opération).
Dans le pire des cas (liste triée par ordre strictement croissant), la condition du test est vraie à chaque itération. Le nombre total d'opérations est linéaire en . La complexité asymptotique est : .
- Fonction
somme_pairs(n):
- Initialisation :
s = 0(1 affectation).
- Boucle
for i in range(2, n+1, 2): itérations.
- À chaque itération : 1 addition/affectation
s += i.
- Retour :
return s(1 opération).
Le nombre total d'itérations est . La complexité asymptotique est : .
- Fonction
mystere(n):
- Initialisation :
i, j = 1, 1(2 affectations).
- Boucle externe
while i <= n: itérations.
- À chaque itération de la boucle externe, la variable
jest réinitialisée à 1 (j = 1).
- Boucle interne
while j <= n: effectue itérations par passage externe.
Le nombre total d'itérations de la boucle interne est . La complexité asymptotique est : .
100 % gratuit
La suite du chapitre est sur Adloun
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.