Le temps de la complexité pour java ArrayList
Est ArrayList
d'un tableau ou d'une liste en java? quel est le temps de la complexité de l'opération d'acquisition, est-il O(n)
ou O(1)
?
Vous devez vous connecter pour publier un commentaire.
Est ArrayList
d'un tableau ou d'une liste en java? quel est le temps de la complexité de l'opération d'acquisition, est-il O(n)
ou O(1)
?
Vous devez vous connecter pour publier un commentaire.
Un
ArrayList
en Java est unList
qui est soutenu par unearray
.La
get(index)
méthode est une constante de temps,O(1)
, opération.Le code tout droit sorti de la bibliothèque Java pour
ArrayList.get(index)
:Fondamentalement, elle retourne une valeur tout droit sorti de la sauvegarde de la matrice. (
RangeCheck(index)
) est également une constante de temps)C'est la mise en œuvre se fait avec un tableau et l'opération get est O(1).
javadoc dit:
Comme tout le monde l'a déjà souligné, les opérations de lecture sont à temps constant O(1) mais les opérations d'écriture ont le potentiel de manquer d'espace dans la sauvegarde de tableau, la ré-allocation, et copie - donc, qui s'exécute en O(n) le temps, comme le doc a dit:
Dans la pratique, tout est O(1), après quelques ajoute, depuis le support de tableau est doublé à chaque fois c'est la capacité est épuisé. Donc, si le tableau commence à 16, est plein, il est réaffecté à 32, 64, 128, etc. alors qu'il évolue bien, mais GC peut toucher jusqu'au cours d'une grande realloc.
Être pédant, c'est un
List
soutenu par un tableau. Et oui, la complexité du temps pourget()
est O(1).Juste une Remarque.
La
get(index)
méthode est une constante de temps,O(1)
Mais c'est le cas, si nous savons l'index. Si nous essayons d'obtenir l'index de l'aide de
indexOf(something)
, d'un coût deO(n)