Wenn du ein bisschen darüber nachdenkst, kannst du es in O (n) Zeit machen, auch wenn es etwas zusätzliches Zeug braucht, das etwas Overhead bringt. (Immernoch an)).
Sie könnten eine Art universelles Hash-Schema verwenden, damit Sie eine gute Hashtable erstellen können. Im Wesentlichen Hash durch die Instanz-ID.
-Nehmen Sie jede Warteschlange und werfen Sie sie in einen doppelt verbundenen Knoten irgendeiner Art. - Fügen Sie jeden Knoten in die Hashtabelle ein. - Wenn Sie einfügen, überprüfen Sie, ob die Eltern und/oder Kinder in der Hashtabelle sind und verknüpfen Sie sie entsprechend. _ Wenn du fertig bist, beginne am Kopf (was du im ersten Durchgang herausfinden kannst), gehe die Liste durch und füge sie zu deiner LinkedList hinzu oder verwende einfach die doppelt verknüpfte Liste.
Dies dauert einen Durchgang, der O (n) ist, und die Hashtabelle nimmt O (n) zu initialisieren und Einsätze sind O (1).
Das Problem, das für Sie übrig bleibt, ist die Auswahl einer guten Hashtabellen-Implementierung, die Ihnen diese Ergebnisse liefert.
Außerdem müssen Sie den Speicheraufwand berücksichtigen, da ich nicht weiß, wie viele Ergebnisse Sie erwarten. Hoffentlich genug, um in Erinnerung zu bleiben.
Ich weiß nicht oder denke, dass es eine SQL-Abfrage-basierte Lösung gibt, aber meine SQL-Kenntnisse sind sehr begrenzt.
Hoffe, das hilft!
Was möchten Sie mehr tun, als nur in die verknüpfte Liste zu setzen? Das Hinzufügen eines Elements in einer LinkedList ist eine O (1) -Operation, daher ist das Hinzufügen von n Elementen eine O (n) -Operation. –
Guffa
Ich möchte sie in die richtige Reihenfolge bringen. Ich werde eine Liste in zufälliger Reihenfolge erhalten, wenn ich sie nur aus der Datenbank auswähle. – countach16
Warum würden Sie sie in zufälliger Reihenfolge erhalten, wenn Sie sie auswählen? Sie werden sie zweifellos schneller mit der Datenbank sortieren lassen als im Code, besonders wenn die Tabelle indiziert ist. –