Polski alfabet ma 32 litery, w tym dziewięć z ogonkami i kreskami bez łacińskich odpowiedników wprost (ą, ć, ę, ł, ń, ó, ś, ź, ż), a ich kolejność sortowania wcale nie jest oczywista: "ż" i "ź" to dwie osobne litery, które w polskim porządku alfabetycznym stoją tuż po "z", ale w prostym sortowaniu po kodzie Unicode obie wylądują daleko za nim, wymieszane z innymi znakami diakrytycznymi ze zupełnie innych języków.
Sortowanie alfabetyczne kontra numeryczne
Sortowanie alfabetyczne (leksykograficzne) porównuje ciągi znak po znaku, jak tekst. Przez to ciąg "10" ląduje przed "9", bo znak "1" jest leksykograficznie mniejszy niż "9" — sortowanie nie „rozumie", że to liczby. Sortowanie numeryczne, przeciwnie, parsuje ciągi jako liczby przed porównaniem, dając oczekiwaną kolejność 9, 10, 11.
Wielkość liter przy sortowaniu
W większości systemów wielkie litery leksykograficznie poprzedzają małe (przez kodowanie znaków), więc "Zebra" może wylądować przed "ananas" przy sortowaniu wrażliwym na wielkość liter. Sortowanie niewrażliwe na wielkość liter najpierw normalizuje ciągi do tej samej wielkości liter do porównania, zachowując oryginalną wielkość liter w wyniku.
Usuwanie duplikatów
Deduplikacja usuwa powtarzające się wiersze, porównując je znak po znaku, a nie pod względem znaczenia. Ważny niuans to wrażliwość na wielkość liter i spacje: ciągi "Tekst" i "tekst " (z dodatkową spacją) są technicznie różne i nie zostaną scalone bez dodatkowej normalizacji przed porównaniem.
Do czego się przydaje
- Usunięcie powtarzających się wpisów z listy adresów e-mail lub URL-i przed importem.
- Sortowanie listy wersji lub ID numerycznie zamiast tekstowo.
- Szybkie porównanie dwóch zestawów danych poprzez sprowadzenie obu list do tej samej posortowanej formy.
Sortowanie naturalne (natural sort)
Sortowanie naturalne to kompromis między podejściem alfabetycznym a liczbowym: rozpoznaje ciągi cyfr wewnątrz tekstu jako liczby, a resztę znaków porównuje jak tekst. Dzięki temu file2.txt znajdzie się przed file10.txt, mimo że formalnie są to ciągi znaków, a nie samodzielne liczby — przydatne dla nazw plików czy wersji z tekstowym prefiksem.