J'ai un problème de choisir la structure de données droite/s, ce sont les exigences:trouver l'index de l'élément dans une collection, quelle collection utiliser?
- Je dois pouvoir insérer et supprimer des éléments
- Je dois aussi être en mesure d'obtenir l'indice de l'élément la collecte (l'ordre dans la collection)
- éléments a un numéro d'identification unique
- I peut trier (si nécessaire) des éléments à l'aide de tout critère
commande est pas vraiment un must, l'important est d'obtenir l'index de l'élément, peu importe comment est implémenté en interne, mais de toute façon je pense que la meilleure approche est la commande. L'index de l'élément est l'ordre dans la collection. Donc, une sorte d'ordre doit être utilisé. Quand je supprime un élément, les autres éléments de celui-ci à la fin changent leur ordre/index.
La première approche utilise une liste chaînée, mais je ne veux pas d'O (n). J'ai aussi pensé à utiliser et à ordonner un dictionnaire, ce qui donnerait O (log n) pour la recherche/insertion/suppression, n'est-ce pas? Y a-t-il une meilleure approche? Je sais qu'un TRIE donnerait O (1) pour des opérations communes, mais je ne vois pas comment obtenir l'index d'un élément, je devrais itérer sur le trie et donnerais O (n), ai-je tort?
Merci, je viens de chercher à propos de l'arbre des statistiques de commande. Comme vous l'avez dit, ils ont une méthode qui renvoie le «rang» de l'élément, c'est exactement ce dont j'ai besoin. Aussi, étendre un trie pour qu'il se comporte comme un arbre de statistiques d'ordre est très intéressant. –