Quelle est la complexité de la in
en Python ? Est-ce que c'est thêta(n) ?
Est-ce la même chose que ce qui suit ?
def find(L, x):
for e in L:
if e == x:
return True
return False
L
est une liste.
Quelle est la complexité de la in
en Python ? Est-ce que c'est thêta(n) ?
Est-ce la même chose que ce qui suit ?
def find(L, x):
for e in L:
if e == x:
return True
return False
L
est une liste.
La complexité de in
dépend entièrement de ce que L
est. e in L
deviendra L.__contains__(e)
.
Voir ceci document sur la complexité temporelle pour la complexité de plusieurs types intégrés.
Voici le résumé pour in
:
Le pire cas O(n) pour les ensembles et les dicts est très rare, mais il peut se produire si __hash__
est mal implémenté. Cela ne se produit que si tous les éléments de votre ensemble ont la même valeur de hachage.
Cela dépend entièrement du type de conteneur. Les conteneurs de hachage ( dict
, set
) utilisent le hachage et sont essentiellement O(1). Les séquences typiques ( list
, tuple
) sont implémentés comme vous le devinez et sont O(n). Les arbres seraient en moyenne O(log n). Et ainsi de suite. Chacun de ces types aurait un __contains__
avec ses caractéristiques big-O.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.