Sortering af en linket liste kan gøres ved hjælp af forskellige algoritmer, en almindelig fremgangsmåde er at bruge flettesortering. Merge sort følger en adskille og hersk strategi:
1. Opdel listen:
- Hvis listen indeholder en eller nul noder, betragtes den som allerede sorteret.
- Ellers skal du dele listen i to nogenlunde lige store halvdele.
2. Erobre (sortér underlisterne):
- Anvend rekursivt flettesorteringsalgoritmen til begge halvdele af listen, og sorter dem effektivt.
3. Flet de sorterede underlister:
- Start med to pointere, en peger på hovedet af hver sorteret underliste.
- Sammenlign dataene i de noder, der peges af disse pointere for at bestemme, hvilket element der kommer først i den sorterede rækkefølge.
- Tilføj det mindre element til en ny liste, der er ved at blive konstrueret.
- Flyt den tilsvarende markør til den næste node i underlisten.
4. Gentag trin 3:
- Fortsæt med at sammenligne og flette elementer fra begge underlister, flyt pointere efter behov.
- Gentag denne proces, indtil alle elementer fra begge underlister er blevet flettet ind i den nye liste.
5. Returner den flettede sorterede liste:
- Når alle elementer er blevet flettet, repræsenterer den resulterende nye liste den sorterede sammenkædede liste. Returner denne sorterede liste som det endelige svar.
Ved systematisk at opdele listen i mindre dele, sortere dem og flette dem sammen igen, sorterer merge sort effektivt hele den sammenkædede liste i stigende rækkefølge. Tidskompleksiteten af denne tilgang er O(n log n), hvor n er antallet af noder i den sammenkædede liste.