J'ai vu certains intéressant de réclamations sur DONC re Java hashmaps et leur O(1)
temps de recherche. Quelqu'un peut m'expliquer pourquoi il en est ainsi? À moins que ces hashmaps sont très différentes de l'une quelconque des algorithmes de hachage je l'ai acheté, il doit toujours exister un ensemble de données qui contient les collisions.
Dans ce cas, la recherche serait O(n)
plutôt que d' O(1)
.
Quelqu'un peut-il expliquer qu'ils sont en O(1) et, le cas échéant, la façon dont ils atteindre cela?
En fait, sur la base des réponses, il apparaît en O(1) est en fait mal, même pour la moyenne des cas. L'article de wikipédia indique également que la complexité pour la moyenne des cas est - O(1 + n/k)
, ce qui équivaut O(n)
, après le retrait de la baisse de l'ordre des facteurs.
L' exécution peut être plus efficace en raison de la sélection d'un bon algorithme de hachage et de facteur de charge, mais la complexité est encore très largement basé sur le nombre d'éléments dans le tableau.