Ich bin auf der Suche nach einer Datenstruktur, die so schnell wie eine einfache Liste sortiert werden kann und die Elemente auf die folgende Weise entfernen können. Lassen Sie uns sagen, dass wir eine Liste wie diese haben:Existiert eine solche Datenstruktur?
[{2,[1]},
{6,[2,1]},
{-4,[3,2,1]},
{-2,[4,3,2,1]},
{-4,[5,4,3,2,1]},
{4,[2]},
{-6,[3,2]},
{-4,[4,3,2]},
{-6,[5,4,3,2]},
{-10,[3]},
{18,[4,3]},
{-10,[5,4,3]},
{2,[4]},
{0,[5,4]},
{-2,[5]}]
heißt eine Liste mit Tupeln (dies ist Erlang-Syntax). Jedes Tupel enthält eine Nummer und eine Liste, die die Mitglieder einer Liste enthält, die zur Berechnung der vorherigen Nummer verwendet wurde. Was ich mit der Liste machen möchte, ist folgendes. Zuerst, Sortieren es, dann nehmen Sie den Kopf der Liste, und schließlich sauber die Liste. Mit sauber Ich meine, alle Elemente aus dem Schwanz zu entfernen, die Elemente enthalten, die im Kopf sind, oder mit anderen Worten, alle Elemente aus dem Schwanz, die Kreuzung mit Kopf ist nicht leer. Zum Beispiel nach dem Sortieren des Kopfes ist {18,[4,3]}
. Im nächsten Schritt alle Elemente der Liste zu entfernen, die 4
oder 3
, das heißt die resultierende Liste enthalten soll diese sein:
[{6,[2,1]},
{4,[2]},
{2,[1]},
{-2,[5]}]
Der Prozess folgt mit dem neuen Kopf zu nehmen und wieder reinigen, bis die ganze Liste verbraucht wird. Beachten Sie, dass, wenn der Bereinigungsvorgang die Reihenfolge beibehält, die Liste nicht bei jeder Iteration neu sortiert werden muss.
Der Engpass hier ist der saubere Prozess. Ich brauche eine Struktur, die es mir ermöglicht, schneller zu reinigen als jetzt.
Kennt jemand eine Struktur, die dies auf effiziente Weise ermöglicht, ohne die Reihenfolge zu verlieren oder zumindest eine schnelle Sortierung zu ermöglichen?
Sie benötigen eine Art unterstützende Indexstruktur, um eine nicht lineare Lookup-Effizienz für Sie zu erstellen. d.h. verfolgen, welche Knoten welche ganzzahligen Werte haben. Sie müssten dann den Aufwand für die Aufrechterhaltung der unterstützenden Indexstruktur in Ihrer Kostenformulierung berücksichtigen. – mba12
Was genau ist "effizient"? Was ist "schnelles Sortieren"? Reicht eine Standardliste nicht aus? Welche Operationen benötigen Sie und mit welcher durchschnittlichen Komplexität? – Bergi
Es ist nicht wirklich klar, ob Sie über die äußere Liste, die inneren Listen oder die Struktur als Ganzes sprechen. – Bergi