Ordinatore di righe
Ordina le righe alfabeticamente, per lunghezza, inverti o randomizza l'ordine delle righe
Righe di input
Righe ordinate
Cos'è l'Ordinamento delle Righe?
L'ordinamento delle righe è il processo di riorganizzazione delle righe di un blocco di testo secondo una regola specifica: ordine alfabetico, ordine inverso, lunghezza della riga o un rimescolamento casuale. Ordinare righe online è un'operazione comune quando si lavora con file di log, dati CSV, elenchi di configurazione o qualsiasi contenuto in testo normale in cui l'ordine è importante. L'operazione suddivide il testo sui caratteri di nuova riga, applica una funzione di confronto all'array risultante e riunisce le righe ordinate.
La maggior parte dei linguaggi di programmazione ordina le stringhe usando il confronto lessicografico per impostazione predefinita, che confronta i caratteri in base ai loro punti di codice Unicode. Questo significa che le lettere maiuscole vengono ordinate prima delle minuscole ("Banana" prima di "apple") e le cifre prima delle lettere. L'ordinamento con localizzazione, a volte chiamato natural sort o collation, risolve il problema applicando regole specifiche per la lingua. Il metodo localeCompare() di JavaScript, locale.strxfrm() di Python e il comando POSIX sort con LC_COLLATE forniscono tutti un ordinamento con supporto di localizzazione.
L'ordinamento per lunghezza è utile quando è necessario trovare le voci più brevi o più lunghe in un elenco, identificare valori anomali nell'output di log o organizzare gli elementi per complessità. L'ordinamento inverso ribalta l'ordine esistente delle righe senza riordinarle, il che è diverso dall'ordinamento alfabetico Z-A. Il rimescolamento casuale assegna a ogni riga una chiave di ordinamento casuale, producendo un ordine diverso a ogni esecuzione. Passare da una modalità all'altra sullo stesso input è più veloce che scrivere uno script usa e getta.
Perché Usare Questo Ordinatore?
Incolla il testo, scegli una modalità di ordinamento e ottieni il risultato immediatamente. Nessuna configurazione da riga di comando, nessun file di script, nessuna installazione di pacchetti.
Casi d'Uso dell'Ordinatore di Righe
Riferimento alle Modalità di Ordinamento
Questo strumento supporta sei modalità di ordinamento. La tabella seguente descrive ogni modalità, il metodo di confronto utilizzato e un risultato di esempio per l'elenco di input: apple, banana, cherry, date, fig.
| Modalità | Descrizione | Metodo JS | Output di Esempio |
|---|---|---|---|
| A-Z | Alphabetical ascending | localeCompare() | apple, banana, cherry |
| Z-A | Alphabetical descending | localeCompare() reversed | cherry, banana, apple |
| Length (short) | Shortest line first | a.length - b.length | fig, date, apple, banana |
| Length (long) | Longest line first | b.length - a.length | banana, apple, date, fig |
| Reverse | Flip line order, no reordering | Array.reverse() | Last line becomes first |
| Random | Randomized comparator (biased) | Math.random() - 0.5 | Different every run |
Algoritmi di Ordinamento Dietro le Quinte
Quando chiami Array.sort() in JavaScript, il motore V8 (Chrome, Node.js) usa Timsort dal 2019. Altri runtime utilizzano algoritmi diversi. La tabella seguente confronta gli algoritmi di ordinamento più comuni usati nelle librerie standard dei linguaggi. Tutti gestiscono i carichi di lavoro di ordinamento righe di questo strumento in meno di un millisecondo per input tipici (fino a 100.000 righe).
| Algoritmo | Usato Da | Tempo | Note |
|---|---|---|---|
| Timsort | Python, Java (Arrays.sort) | O(n log n) | Stable, fast on partially sorted data |
| Quicksort | C stdlib, V8 (older) | O(n log n) | In-place, unstable by default |
| Merge sort | Most stable-sort implementations | O(n log n) | Stable, predictable, uses extra memory |
| Introsort | C++ std::sort, .NET | O(n log n) | Hybrid: quicksort + heapsort fallback |
| Radix sort | Fixed-length keys, integers | O(nk) | Non-comparative, linear for short keys |
Esempi di Codice
Ordina le righe in modo programmatico in JavaScript, Python, Go e dalla riga di comando. Ogni esempio copre l'ordinamento alfabetico, per lunghezza e inverso.
const text = `banana
apple
cherry
date
fig`
// Sort A-Z (locale-aware)
const az = text.split('\n').sort((a, b) => a.localeCompare(b)).join('\n')
// → "apple\nbanana\ncherry\ndate\nfig"
// Sort by line length, shortest first
const byLen = text.split('\n').sort((a, b) => a.length - b.length).join('\n')
// → "fig\ndate\napple\nbanana\ncherry"
// Reverse line order (no alphabetical sorting)
const reversed = text.split('\n').reverse().join('\n')
// → "fig\ndate\ncherry\napple\nbanana"
// Remove duplicates and sort
const unique = [...new Set(text.split('\n'))].sort().join('\n')text = """banana apple cherry date fig""" lines = text.splitlines() # Sort A-Z (case-insensitive) az = sorted(lines, key=str.lower) # → ['apple', 'banana', 'cherry', 'date', 'fig'] # Sort by line length by_len = sorted(lines, key=len) # → ['fig', 'date', 'apple', 'banana', 'cherry'] # Reverse original order rev = lines[::-1] # → ['fig', 'date', 'cherry', 'apple', 'banana'] # Shuffle randomly import random random.shuffle(lines) # modifies in place
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
text := "banana\napple\ncherry\ndate\nfig"
lines := strings.Split(text, "\n")
// Sort A-Z
sort.Strings(lines)
fmt.Println(strings.Join(lines, "\n"))
// → apple\nbanana\ncherry\ndate\nfig
// Sort by length
sort.Slice(lines, func(i, j int) bool {
return len(lines[i]) < len(lines[j])
})
fmt.Println(strings.Join(lines, "\n"))
// → fig\ndate\napple\nbanana\ncherry
}# Sort lines A-Z
sort file.txt
# Sort lines Z-A (reverse)
sort -r file.txt
# Sort numerically (first field)
sort -n data.txt
# Sort by line length (awk + sort + cut)
awk '{ print length, $0 }' file.txt | sort -n | cut -d' ' -f2-
# Shuffle lines randomly
shuf file.txt # GNU coreutils
sort -R file.txt # alternative (not truly uniform)
# Sort and remove duplicates
sort -u file.txt