Zum Inhalt springen

Laufzeitkomplexität | sortieren mit Binärbaum


DaKa

Empfohlene Beiträge

Hallo,

da ihr mir beim letzten Mal schon so schnell und kompetent weitergeholfen habt, hoffe ich hier nochmal auf Unterstützung:

gegeben:

  • unsortierte Menge M mit n Elementen

verwendetes Sortierverfahren:

  • Aufbau eines binären Suchbaums
  • Inorderdurchlauf dieses Baumes

Gefragt:

  • Laufzeitkomplexität (best- und worst-case)

########################

ANSATZ:

  • AUFBAU: Suche die Stelle, an der es eingefügt werden soll hat Laufzeitkomplexität O(log n) im worst-case und O(1) im best-case, das einfügen selber O(1) [--> stimmt das?]
  • INORDERDURCHLAUF: die Laufzeitkomplexität für den best- und worst-case ist O(n), da jeweils alle Elemente durchlaufen werden müssen, um sie sortiert ausgeben zu können [--> stimmt das?]

daraus erhielte ich dann folgende Gleichungen (AUFBAU[=suchen+einfügen]+DURCHLAUF):

  • best-case: (O(1)+O(1)+O(n)
  • worst-case: (O(log n)+O(1)+O(n)

Stimmt der Ansatz überhaupt und wenn ja, wie lautet dann die Laufzeitkomplexität, also wie könnte man das auflösen.

Danke für Eure Mühen,

Viele Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

AUFBAU: Suche die Stelle, an der es eingefügt werden soll hat Laufzeitkomplexität O(log n) im worst-case und O(1) im best-case, das einfügen selber O(1) [--> stimmt das?]

Das kannst Du so pauschal nicht sagen, denn das kommt darauf an wie Deine Datenstrukturen aussehen. Man kann gerade Binärbäume als Arraysstrukturen speichern, wobei man dann die Positionen des nächsten Knotens direkt berechnen kann (siehe Ein Speichermodell der Informatik).

Auch kommt es darauf an, ob Du z.B. eine einzelne Ebene des Baums noch zwischen den Blättern vernetzt, so kannst Du Dir z.B. das Suchen von der Wurzel abhängig sparen.

[*]INORDERDURCHLAUF: die Laufzeitkomplexität für den best- und worst-case ist O(n), da jeweils alle Elemente durchlaufen werden müssen, um sie sortiert ausgeben zu können [--> stimmt das?]

Ja kann sein, kommt aber letztendlich auf die darunterliegende Datenstruktur an. O(n) passt, wenn man davon ausgeht, dass Du ein Array für die Daten hast.

Der Worst-Case ist meistens der einfachste Fall (http://de.wikipedia.org/wiki/Binärer_Suchbaum bzw http://de.wikipedia.org/wiki/Liste_%28Datenstruktur%29 ). Je nachdem ob Dein Baum z.B. ausbalanciert funktionieren entsprechende Operationen auch performanter.

Gerade die best- und avarage-case sind durch die zugrunde liegenden Datenstrukturen bestimmt.

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

AUFBAU: Suche die Stelle, an der es eingefügt werden soll hat Laufzeitkomplexität O(log n) im worst-case und O(1) im best-case, das einfügen selber O(1) [--> stimmt das?]

|log(n+1)| (Gaussklammer / Aufrunden)

Damit bei n = 1 Knoten der Aufwand nicht zu 0 wird.

INORDERDURCHLAUF: die Laufzeitkomplexität für den best- und worst-case ist O(n), da jeweils alle Elemente durchlaufen werden müssen, um sie sortiert ausgeben zu können [--> stimmt das?]

Wenn du die Elemente unsortiert in einem Baum anordnest, dann hast du ungefähr den gleichen Aufwand wie bei einer Liste, weil dann alle Elemente überprüft werden müssen.

Normalerweise hat man Bäume bei denen in der Wurzel ein Wert steht, dann im linken unteren Knoten ein kleinerer Wert und im rechten unteren Knoten ein größeren Wert. Das gilt dann für jeden weiteren Unterknoten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...