J'essaie de lister les complexités temporelles des opérations des structures de données communes comme les tableaux, l'arbre de recherche binaire, le tas, la liste liée, etc. et surtout je fais référence à Java. Ils sont très courants, mais je suppose que certains d'entre nous ne sont pas sûrs à 100% de la réponse exacte. Toute aide, en particulier les références, est grandement appréciée.
Par exemple, pour une liste chaînée unique: la modification d'un élément interne est O (1). Comment peux-tu le faire? Vous DEVEZ rechercher l'élément avant de le modifier. De plus, pour le vecteur, l'ajout d'un élément interne est donné par O (n). Mais pourquoi ne pouvons-nous pas le faire en temps constant amorti en utilisant l'indice? Veuillez me corriger si je manque quelque chose.
Je publie mes conclusions / suppositions comme première réponse.
la source
Réponses:
Tableaux
Delete
opération n'est disponible sur les tableaux. Nous pouvons supprimer symboliquement un élément en le définissant sur une valeur spécifique, par exemple -1, 0, etc. en fonction de nos besoinsInsert
pour les tableaux est fondamentalementSet
comme mentionné au débutListe des tableaux:
Liste liée:
Liste à double lien:
Empiler:
File d'attente / Deque / File d'attente circulaire:
Arbre de recherche binaire:
Arbre rouge-noir:
Heap / PriorityQueue (min / max):
HashMap / Hashtable / HashSet:
la source