Ich versuche, die zeitliche Komplexität von Operationen gängiger Datenstrukturen wie Arrays, binärer Suchbaum, Heap, verknüpfter Liste usw. aufzulisten, und beziehe mich insbesondere auf Java. Sie sind sehr häufig, aber ich denke, einige von uns sind nicht 100% sicher über die genaue Antwort. Jede Hilfe, insbesondere Referenzen, wird sehr geschätzt.
Beispiel: Für einfach verknüpfte Listen: Das Ändern eines internen Elements ist O (1). Wie kannst du das machen? Sie MÜSSEN das Element durchsuchen, bevor Sie es ändern. Für den Vektor wird das Hinzufügen eines internen Elements als O (n) angegeben. Aber warum können wir es nicht in amortisierter konstanter Zeit mit dem Index tun? Bitte korrigieren Sie mich, wenn mir etwas fehlt.
Ich poste meine Ergebnisse / Vermutungen als erste Antwort.
quelle
Antworten:
Arrays
Delete
für Arrays keine Operation verfügbar. Wir können ein Element symbolisch löschen, indem wir es auf einen bestimmten Wert setzen, z. B. -1, 0 usw., abhängig von unseren AnforderungenInsert
für Arrays grundsätzlichSet
wie eingangs erwähntAnordnungsliste:
Verknüpfte Liste:
Doppelt verknüpfte Liste:
Stapel:
Warteschlange / Deque / Circular Queue:
Binärer Suchbaum:
Rot-Schwarzer Baum:
Heap / PriorityQueue (min / max):
HashMap / Hashtable / HashSet:
quelle