Mergesort für verknüpfte Listen

Go Hard sorting

Aufgabe «Mergesort für verknüpfte Listen»

Gegeben ist eine einfach verknüpfte Liste, die aus ganzen Zahlen besteht. Es soll ein Mergesort für diese Liste implementiert werden. Eingabedaten: die Anzahl der Elemente und die Elemente selbst. Ausgabedaten: die sortierte Liste, durch Leerzeichen getrennt ausgegeben. Einschränkungen: Anzahl der Elemente bis zu 10^5, Werte im Bereich von -10^9 bis 10^9. Es ist der Mergesort-Algorithmus mit einer Komplexität von O(n log n) zu verwenden und es dürfen keine zusätzlichen Arrays zum Speichern der Werte verwendet werden.

Eingabeformat

Erste Zeile: eine ganze Zahl n (1 ≤ n ≤ 10^5) — die Anzahl der Elemente. Zweite Zeile: n ganze Zahlen, durch Leerzeichen getrennt.

Ausgabeformat

Eine Zeile: n ganze Zahlen, durch Leerzeichen getrennt — die sortierte Liste.

Beispiele

Beispiel 1

EINGABE
6 -5 0 10 3 -2 7
AUSGABE
-5 -2 0 3 7 10
main.go