web-dev-qa-db-fra.com

Complexité temporelle pour Java ArrayList

J'ai trouvé d'autres entrées pour cette question qui traitaient de méthodes spécifiques, mais rien de complet. Je voudrais vérifier ma propre compréhension des méthodes les plus utilisées de cette structure de données:

O (1) - Temps constant:

isEmpty()
add(x)
add(x, i)
set(x, i)
size()
get(i)
remove(i)

O (N) - Temps linéaire:

indexof(x)
clear()
remove(x)
remove(i)

Est-ce correct? Merci de votre aide.

24
dvanaria

La meilleure ressource vient directement de API officielle :

Les opérations size, isEmpty, get, set, iterator et listIterator s'exécutent en temps constant. L'opération d'ajout s'exécute en temps constant amorti, c'est-à-dire que l'ajout de n éléments nécessite O(n) temps. Toutes les autres opérations s'exécutent en temps linéaire (grosso modo). Le facteur constant est faible par rapport à celui de l'implémentation LinkedList.

31
brian_d