Line Sorter
Urutkan baris secara alfabetis, berdasarkan panjang, terbalik atau acak
Baris masukan
Baris terurut
Apa Itu Pengurutan Baris?
Pengurutan baris adalah proses menyusun ulang baris-baris dalam sebuah blok teks berdasarkan aturan tertentu: urutan alfabetis, urutan terbalik, panjang baris, atau pengacakan. Mengurutkan baris secara online adalah tugas umum saat bekerja dengan file log, data CSV, daftar konfigurasi, atau konten teks biasa yang urutannya penting. Operasi ini membagi teks berdasarkan karakter baris baru, menerapkan fungsi perbandingan pada array yang dihasilkan, lalu menggabungkan kembali baris-baris yang telah diurutkan.
Sebagian besar bahasa pemrograman mengurutkan string menggunakan perbandingan leksikografis secara default, yang membandingkan karakter berdasarkan code point Unicode-nya. Ini berarti huruf kapital diurutkan sebelum huruf kecil ("Banana" sebelum "apple"), dan digit diurutkan sebelum huruf. Pengurutan yang mempertimbangkan lokal, kadang disebut natural sort atau collation, memperbaiki hal ini dengan menerapkan aturan khusus bahasa. JavaScript's localeCompare(), Python's locale.strxfrm(), dan perintah POSIX sort dengan LC_COLLATE semuanya mendukung pengurutan berbasis lokal.
Pengurutan berdasarkan panjang berguna ketika Anda perlu menemukan entri terpendek atau terpanjang dalam sebuah daftar, mengidentifikasi anomali dalam output log, atau mengatur item berdasarkan kompleksitasnya. Pengurutan terbalik membalik urutan baris yang ada tanpa menyusun ulang berdasarkan alfabet — ini berbeda dari pengurutan Z-A. Pengacakan acak menetapkan kunci urutan acak ke setiap baris sehingga menghasilkan urutan yang berbeda setiap kali dijalankan. Beralih antar mode pada input yang sama jauh lebih cepat daripada menulis skrip sekali pakai.
Mengapa Menggunakan Line Sorter Ini?
Tempel teks Anda, pilih mode pengurutan, dan dapatkan hasilnya secara instan. Tanpa pengaturan command-line, tanpa file skrip, tanpa instalasi paket.
Kasus Penggunaan Line Sorter
Referensi Mode Pengurutan Baris
Alat ini mendukung enam mode pengurutan. Tabel di bawah menjelaskan setiap mode, metode perbandingan yang digunakan, dan contoh hasil untuk daftar input: apple, banana, cherry, date, fig.
| Mode | Deskripsi | Metode JS | Contoh Output |
|---|---|---|---|
| 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 |
Algoritma Pengurutan di Balik Layar
Saat Anda memanggil Array.sort() di JavaScript, mesin V8 (Chrome, Node.js) menggunakan Timsort sejak 2019. Runtime lain menggunakan algoritma yang berbeda. Tabel di bawah membandingkan algoritma pengurutan yang paling umum digunakan dalam pustaka standar bahasa pemrograman. Semua algoritma ini menangani beban kerja pengurutan baris dalam alat ini dalam waktu kurang dari satu milidetik untuk input tipikal (di bawah 100.000 baris).
| Algoritma | Digunakan Oleh | Waktu | Catatan |
|---|---|---|---|
| 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 |
Contoh Kode
Urutkan baris secara terprogram dalam JavaScript, Python, Go, dan command line. Setiap contoh mencakup pengurutan alfabetis, berdasarkan panjang, dan urutan terbalik.
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