Je brosse des algorithmes et des structures de données et j'ai quelques questions ainsi que des affirmations que je voudrais que vous vérifiiez.Régler la complexité du temps et de la vitesse
ArrayList - O (1) (taille, obtenir, définir, ...), O (n) - ajouter une opération.
LinkedList - toute l'opération O (1) (y compris add()), sauf pour récupérer le nième élément qui est O (n). Je suppose que l'opération size() s'exécute également dans O (1), non?
TreeSet - toutes les opérations O (lg (N)). L'opération size() prend O (lg (n)), n'est-ce pas?
HashSet - toutes les opérations O (1) si la fonction de hachage appropriée est appliquée.
HashMap - toutes les opérations O (1), anologous à HashSet.
Toute autre explication est la bienvenue. Merci d'avance.
Si vous avez une telle HashSet magique, pourquoi avez-vous besoin ArrayList? –
@Stas: Parce qu'une liste et un ensemble ne sont pas la même chose, et aussi parce que les facteurs constants peuvent encore être significativement différents ... –
@Stas: La commande vous donne seulement une idée de la façon dont l'opération évolue. Il ne vous dira pas le facteur par ex. HashSet peut être plusieurs fois plus lent que ArrayList et n'a pas de méthodes get()/set(). –