Complexité temporelle de HashMap, HashTable, HashSet, TreeMap
Time Complexity Hashmap
Le hashSet, la table de hachage et le hashMap sont tous basés sur la fonction de hachage, la complexité temporelle O (1), mais si c'est trop mauvais, c'est O (n)
TreeSet ==> O (log (n)) ==> Recherche basée sur l'arborescence, il suffit de rechercher la moitié
The reason for O(1) is that after the discrete, the subscript corresponding keyword
Le hachage est un hachage, voire un hachage. Mais j'ai toujours eu une question sur la complexité temporelle de la table de hachage. Une chaîne qui doit être stockée, hachée en un index relativement court par la fonction de hachage, ce qui accélère la vitesse d'accès. Mais pourquoi la complexité temporelle de l'accès atteint-elle le niveau constant O (1)? ? La recherche d'un index ne prend-elle pas du temps lors de la recherche? Pourquoi pas O (n)? n est la longueur de la table de hachage,
Si vous avez une compréhension approfondie de la construction de Hashtable, vous savez, Hashtable est une combinaison des avantages des tableaux et des listes liées. Lorsque Hashtable recherche des valeurs, utilisez d'abord la valeur et la longueur de Hashtable pour effectuer l'opération modulo. Le numéro obtenu est directement utilisé comme index du tableau d'entrée dans la table de hachage, car la table de hachage est composée du tableau d'entrée, donc il peut être directement positionné à la position spécifiée, pas besoin de rechercher, bien sûr, il y a un problème ici, chaque entrée est en fait une liste chaînée. Si l'entrée a beaucoup de valeurs, elle doit encore être parcourue, on peut donc dire que la complexité temporelle de la table de hachage est de préférence O (1) mais la pire est O (n). Quand c'est le pire, ce sont toutes les valeurs de la table de hachage. Les valeurs de hachage sont les mêmes et sont toutes allouées dans une entrée. Bien sûr, cette probabilité n'est pas très différente de la probabilité de 100 millions de billets de loterie.
Il semble avoir le plus grand impact sur la complexité temporelle de la boucle de la liste d'entrée, et la complexité temporelle de la recherche de liste chaînée est O (n), qui est liée à la longueur de la liste chaînée. Il faut s'assurer que la longueur de la liste chaînée est de 1, on peut dire que la complexité temporelle peut satisfaire O (1). Mais dans ce cas, seul l'algorithme de hachage minimise le conflit, de sorte que la longueur de la liste chaînée est aussi courte que possible, et l'état idéal est 1. Par conséquent, on peut conclure que la complexité du temps de recherche de HashMap est seulement O (1) et le pire est O (n) dans le cas le plus idéal, et il est garanti que cet état idéal n'est pas contrôlé par nos développeurs.
Complexité temporelle des structures de données communes
http://www.cnblogs.com/aspirant/p/8902285.html
http://www.cnblogs.com/aspirant/p/8908399.html
http://www.cnblogs.com/aspirant/p/8906018.html