Considérons un tableau par rapport à une table de hachage où les clés ne sont que les index d'une liste. Leurs limites Big-O d'insertion, de recherche et de suppression en casse moyenne sont O(1)
. Je comprends que vous pouvez obtenir des gains de bas niveau dans la localité du cache avec un tableau, et il y a une surcharge marginale (principalement constante) pour les opérations de hachage, mais les hashtables vous procurent de l'éparpillement, ce qui dans certaines applications est une grande victoire .Pourquoi utiliser un tableau pour implémenter une "liste" au lieu d'une table de hachage?
Quels autres contrastes importants (ou petits) manque-t-il?
Contexte: J'entrevois parfois une discussion à ce sujet lorsque j'interviewe des candidats. Habituellement, le contexte est "comment implémenteriez-vous le type de tableau Javascript à l'intérieur de la VM JS?" Pour des données densément compactées, je me range du côté d'un tableau natif, mais je veux avoir un meilleur raisonnement que l'intuition selon laquelle «ça semble moins comme une surcharge».
C'est la bonne réponse. – slebetman
Une manière intéressante de le regarder. Merci. OK, donc fondamentalement, il n'y a pas d'autres distinctions évidentes au delà de ce que je perçois - vraiment, une hashtable dans ce scénario est un tableau avec un peu plus de frais généraux et d'éparpillement libre, utile dans un genre de façon. –