2016-09-15 1 views
1

Ich möchte ein Limit-Orderbuch erstellen, das eine Kauf-/Verkaufsauftragsliste enthält. Für die Kaufauftragsliste sollte der höchste Kaufwert zuerst in der Liste und für die Verkaufsauftragsliste der niedrigste Verkaufswert zuerst in der Liste sein. Für neu kommende Bestellung möchte ich den richtigen Platz zum Einfügen in die Liste bekommen.Limit Orderbuch: Datenstruktur zur Verwaltung der Kauf-/Verkaufsauftragsliste

Derzeit bin ich mit linearer Suche einfügen, aber es dauert O (n) Zeit, die für Millionen von Ordnung sehr hoch ist.

Gibt es eine Datenstruktur, die den Knoten in sortierter verknüpfter Liste in O (log n) oder weniger Zeit einfügen kann?

+0

Die entsprechende Datenstruktur ist eine [priority queue] (https://en.wikipedia.org/wiki/Priority_queue). – user3386109

+2

Da es nur darum geht, einen einzelnen Wert (Minimum oder Maximum) oben zu halten, verwende Max-Heap und Min-Heap. – sameerkn

Antwort

0

den Knoten in sortierte verknüpfte Liste in O (log n) oder weniger Zeit einfügen?

Nein, das ist nicht möglich.

auch immer Sie einen binären Suchbaum oder einen min Heap verwenden kann (wenn Sie nur die Min- oder Max zu einem Zeitpunkt wollen), um die Daten zu speichern. Ein ausgewogener binärer Suchbaum würde Ihre Daten sortiert halten und das Einfügen/Löschen in O (log n) Zeit vornehmen.

+0

Die Verwendung von Heap fügt amortisierte Kosten für das dynamische Array hinzu. – kadsank

Verwandte Themen