Die ursprüngliche Frage macht es nicht klar, wie Oft müssen Daten abgerufen werden, während sie Zahlen empfängt, oder wie die Zahlen abgerufen werden sollen (nach Index, nur der kleinste, nur der größte oder alle, ...).
Eine Option besteht darin, die Logik für eine Bottom-Up-Merge-Sortierung für verknüpfte Listen zu verwenden, die ein kleines Array von Referenzen oder Zeigern (26 bis 32 Elemente) verwendet, die jeweils auf eine Liste verweisen. Array [i] ist eine Referenz oder ein Zeiger auf eine Liste mit (2 zu den Power-I) Knoten, Array [0] Punkte zu einer Liste der Größe 1, Array [1] -> Liste der Größe 2, Array [2] -> Liste der Größe 4, wobei das letzte Mitglied des Arrays auf eine unbegrenzte Liste zeigt. Knoten werden nacheinander in das Array eingefügt, was dem Empfangen von Zahlen nacheinander entspricht.
Das Problem ist, dass die Daten in Array von Listen gespeichert werden, also nur teilweise sortiert. Um eine vollständig sortierte Liste zu erhalten, wird das Array von Listen in einer einzigen Liste zusammengeführt. Normalerweise wird dies erst durchgeführt, nachdem alle Daten im Array gespeichert wurden.
Wiki Artikel für bottom up merge sort auf verkettete Listen:
http://en.wikipedia.org/wiki/Merge_sort#Bottom-up_implementation_using_lists
Diese Methode bietet eine schnelle durchschnittliche Einfügungszeit, mit gelegentlichen langen Zeiten. Jede andere Zahl wird nur in Array [0] gespeichert. Eingaben an der Leistung von 2 Grenzen beinhalten mehrere Zusammenführungsschritte, die 16. Eingabe endet am Zusammenführen von zwei Listen von 8 Zahlen, die 1024. Eingabe endet beim Zusammenführen von zwei Listen von 512 Nummern.
Wie bereits erwähnt, eine binäre Suchbaum (gelegentlich neu ausbalanciert), kann eine bessere Lösung sein.
Wenn Sie sie nach Ankunftszeit sortieren möchten, fügen Sie einfach jede neue Nummer am Ende der Liste hinzu .... –
Ich habe meine Frage bearbeitet, ich möchte sie nur sortieren (0,2,5, 6 ....) – VitalyT
Was bedeutet O (nn^2) ??? –