L'alfabeto italiano tradizionale ha solo 21 lettere: j, k, w, x e y non ne fanno parte e compaiono quasi solo in parole straniere o nomi propri come "Jacopo" o "Walter". Un elenco che mescola queste parole "importate" con parole italiane pure segue quindi un ordinamento alfabetico che, storicamente, non aveva nemmeno una posizione prevista per quelle lettere.
Ordinamento alfabetico contro numerico
L'ordinamento alfabetico (lessicografico) confronta le stringhe carattere per carattere, come testo. Per questo la stringa "10" finisce prima di "9", perché il carattere "1" è lessicograficamente minore di "9" — l'ordinamento non "capisce" che sono numeri. L'ordinamento numerico, invece, interpreta le stringhe come numeri prima di confrontarle, dando l'ordine atteso 9, 10, 11.
Maiuscole e minuscole nell'ordinamento
Nella maggior parte dei sistemi, le lettere maiuscole precedono lessicograficamente quelle minuscole (per via della codifica dei caratteri), quindi "Zebra" potrebbe finire prima di "ananas" in un ordinamento sensibile alle maiuscole. Un ordinamento che ignora le maiuscole normalizza prima le stringhe alla stessa capitalizzazione per il confronto, mantenendo però la capitalizzazione originale nel risultato.
Eliminazione dei duplicati
La deduplicazione rimuove le righe ripetute confrontandole carattere per carattere, non per significato. Una sfumatura importante è la sensibilità a maiuscole e spazi: le stringhe "Testo" e "testo " (con uno spazio in più) sono tecnicamente diverse e non verranno unite senza una normalizzazione aggiuntiva prima del confronto.
A cosa serve
- Rimuovere voci ripetute da un elenco di indirizzi email o URL prima di un'importazione.
- Ordinare un elenco di versioni o ID numericamente invece che come testo.
- Confrontare rapidamente due set di dati portando entrambi gli elenchi alla stessa forma ordinata.
Ordinamento naturale (natural sort)
L'ordinamento naturale è un compromesso tra l'approccio alfabetico e quello numerico: riconosce le sequenze di cifre all'interno di una riga come numeri, mentre confronta il resto dei caratteri come testo. Grazie a questo file2.txt si troverà prima di file10.txt, anche se formalmente si tratta di stringhe e non di numeri autonomi — utile per nomi di file o versioni con prefisso testuale.