Baris Sorter
Urutkan, balik, deduplikasi, atau acak baris teks.
Mode pengurutan
Tentang pengurutan baris
Pengurutan baris mengatur teks dengan membandingkan setiap baris berdasarkan urutan yang dipilih. Pengurutan alfabet berguna untuk daftar, glosarium, dan direktori. Pengurutan numerik memperlakukan setiap baris sebagai angka dan mengurutkannya berdasarkan nilai. Pengurutan berdasarkan panjang mengelompokkan entri pendek dan panjang, praktis untuk pemformatan dan tata letak.
Alat ini juga memungkinkan Anda menghapus baris duplikat, menghapus baris kosong, membersihkan spasi, membalik urutan, atau mengacak baris secara acak. Semua pemrosesan dilakukan secara seketika dan di browser Anda.
Penggunaan umum
- Susun secara alfabet daftar nama, item, atau entri
- Urutkan nilai kolom CSV atau entri log
- Hapus duplikat dari file atau dataset
- Acak daftar untuk lotere atau penugasan acak dalam permainan
- Urutkan angka dari terkecil ke terbesar, atau sebaliknya
- Bersihkan data dengan menghapus spasi dan baris kosong
Pertanyaan umum
Bagaimana cara kerja pengurutan numerik?
Pengurutan numerik mengekstrak angka di awal setiap baris dan mengurutkan berdasarkan nilai itu. Baris yang tidak dimulai dengan angka ditempatkan di akhir. Ini berarti "9 item" mendahului "10 item" (tidak seperti pengurutan alfabet, di mana "10" akan mendahului "9").
Apa yang dilakukan "Hapus duplikat"?
Opsi ini menghapus baris yang muncul lebih dari sekali, hanya menyimpan kemunculan pertama. Dikombinasikan dengan "Tidak peka huruf besar/kecil", baris yang hanya berbeda dalam kapitalisasi juga diperlakukan sebagai duplikat.
Apakah pengacakan benar-benar acak?
Pengacakan menggunakan algoritma Fisher-Yates dengan Math.random(). Cocok untuk penggunaan umum seperti mengacak daftar atau menarik nama secara acak. Tidak aman secara kriptografi · untuk keacakan dengan taruhan keamanan, gunakan alat khusus.
Apa itu pengurutan baris?
Pengurutan baris adalah operasi menyusun ulang baris dari file teks atau daftar sesuai dengan aturan yang dipilih. Aturan dapat berupa leksikografis (membandingkan karakter dari kiri ke kanan berdasarkan code point Unicode-nya), numerik (mengekstrak angka awal dan membandingkan nilai), berbasis panjang (membandingkan jumlah karakter), atau acak (sebuah Fisher-Yates shuffle yang menghasilkan permutasi acak seragam). Setiap aturan menjawab pertanyaan yang berbeda tentang data Anda.
Alat ini menyediakan delapan mode urut (A ke Z, Z ke A, numerik naik, numerik turun, terpendek dulu, terpanjang dulu, shuffle, balik) ditambah empat opsi yang dapat diaktifkan (case-insensitive, trim whitespace, hapus duplikat, hapus baris kosong). Kombinasi mencakup alur kerja pembersihan daftar sehari-hari yang dulu memerlukan one-liner Bash dengan sort, uniq, awk dan pipeline shell. Sekarang Anda menempelkan baris, klik mode dan beberapa checkbox, dan baca hasilnya.
Semua komputasi terjadi di browser Anda menggunakan Array.prototype.sort bawaan JavaScript, yang menggunakan TimSort (hibrida merge sort dan insertion sort, stabil dan kasus terburuk O(n log n)) di V8, JavaScriptCore dan SpiderMonkey sejak 2018. Untuk daftar di bawah satu juta baris, operasi selesai lebih cepat daripada waktu yang Anda butuhkan untuk melepaskan tombol mouse.
Apa yang ada di dalam sorter
Antarmuka menyusun tiga kontrol: textarea input tempat Anda menempel baris Anda, baris delapan tombol mode yang menyoroti pilihan aktif, dan baris empat checkbox untuk opsi dedup-and-trim. Di bawahnya duduk tombol aksi Sort Lines, yang menghasilkan textarea output hanya-baca dan memperbarui penghitung baris di bawahnya.
Penghitung baris di atas dan di bawah input dan output memungkinkan Anda memeriksa kewarasan operasi sekilas: jika Anda mulai dengan 1.234 baris dan mencentang Remove Duplicates, jumlah output langsung memberi tahu Anda berapa banyak duplikat yang dihapus. Pintasan ini lebih cepat daripada menulis skrip Python atau AWK satu-kali untuk tugas yang sama.
Tiga aksi membungkus bagian bawah: Copy Result menulis output ke clipboard Anda melalui Clipboard API, Download .txt menyimpan file teks UTF-8 dengan ujung baris LF, dan Clear mengosongkan kedua textarea. Tidak ada riwayat yang disimpan, tidak ada pengaturan yang bertahan, dan menyegarkan halaman mengembalikan alat ke kondisi A-ke-Z default-nya.
Sejarah dan latar belakang
Sorter kartu berlubang Hollerith (1890)
Sorter kartu berlubang Herman Hollerith, dibuat untuk Sensus AS 1890, secara mekanis menjatuhkan setiap kartu ke salah satu dari 12 bin berdasarkan posisi lubang yang dilubangi. Operator menjalankan kartu melalui sorter berkali-kali, sekali per digit, untuk menghasilkan urutan numerik penuh. Teknik ini disebut radix sort, dan mendasari komputasi bisnis selama 60 tahun berikutnya. IBM, didirikan sebagai Computing-Tabulating-Recording Company pada 1911, tumbuh langsung dari mesin Hollerith.
John von Neumann mendeskripsikan merge sort (1945)
Dalam laporan internal 1945 tentang EDVAC, John von Neumann mendeskripsikan merge sort, algoritma pertama yang ditulis untuk komputer program-tersimpan. Idenya rekursif: bagi daftar menjadi dua, urutkan setiap bagian, lalu gabungkan kedua bagian yang diurutkan dengan berulang kali mengambil elemen depan yang lebih kecil. Merge sort tetap menjadi contoh klasik divide-and-conquer dan merupakan dasar TimSort, algoritma yang digunakan V8 untuk Array.prototype.sort hari ini.
Tony Hoare menemukan quicksort (1959)
Tony Hoare, saat itu 25 tahun mengunjungi Universitas Negeri Moskow untuk belajar bahasa Rusia, merancang quicksort pada 1959 sambil mencoba menyortir daftar kata Rusia terhadap kamus Inggris. Algoritma memilih pivot, mempartisi daftar di sekitarnya, dan rekursif di setiap sisi. Kasus rata-rata adalah O(n log n), kasus terburuk O(n kuadrat), tetapi dalam praktiknya mengungguli merge sort karena lokalitas cache. Hoare memenangkan Turing Award pada 1980.
J.W.J. Williams memperkenalkan heapsort (1964)
J.W.J. Williams menerbitkan heapsort di Communications of the ACM pada 1964. Algoritma membangun heap biner (pohon di mana setiap induk setidaknya sebesar anak-anaknya) dan berulang kali mengekstrak akar. Dijamin O(n log n) baik dalam kasus rata-rata maupun terburuk, tanpa memori tambahan, tetapi tidak ramah-cache. Heapsort adalah fallback kasus terburuk di dalam std::sort C++ (Introsort, 1997).
ASCII memperbaiki urutan sortir (1963 hingga 1967)
ASCII, diratifikasi pada 1963 dan direvisi pada 1967, menetapkan kode 48 hingga 57 untuk angka 0 hingga 9 dan 65 hingga 90 untuk huruf besar A hingga Z. Konvensi bahwa 0 disortir sebelum 9 disortir sebelum A disortir sebelum Z (dan bahwa huruf besar disortir sebelum huruf kecil) tertanam dalam setiap sortir leksikografis default yang dihasilkan dunia sejak itu. Inilah sebabnya mengapa Apple disortir sebelum apple dan mengapa 10 disortir sebelum 9 ketika Anda membandingkan string karakter demi karakter.
Unicode Collation Algorithm (1996)
Unicode Consortium menerbitkan Unicode Collation Algorithm (UCA) pertama pada 1996, dikodifikasi sebagai UTS #10. UCA memberikan setiap titik kode bobot multi-level (primer, sekunder, tersier) sehingga pengurutan dapat sadar-lokal: dalam bahasa Jerman, ä dapat disortir dengan a atau setelah z tergantung konteks; dalam bahasa Swedia, å disortir setelah z; dalam bahasa Spanyol, ñ disortir setelah n. Intl.Collator JavaScript (2014) membungkus UCA dan inilah yang memberdayakan pengurutan daftar yang benar-lokal di web.
Alur kerja praktis
Mengurutkan daftar nama secara abjad
Anda memiliki daftar kelas, daftar peserta, atau dump kontak yang ditempelkan dari kolom spreadsheet. Tempel, centang Case insensitive (agar alice dan Alice disortir bersama), klik A ke Z. Output siap untuk disalin kembali ke spreadsheet atau ditempelkan ke baris BCC email. Trim Whitespace menangkap spasi yang nyasar dari artefak salin-tempel.
Deduplikasi entri log
Anda mengekspor 5.000 pesan kesalahan dari log server dan ingin mengetahui yang berbeda. Tempel, centang Remove duplicates, klik A ke Z. Jumlah output memberi tahu Anda berapa banyak kesalahan unik yang ada. Gabungkan dengan Trim Whitespace jika baris log memiliki indentasi yang bervariasi.
Menggambar nama untuk lotere atau undian
Tempelkan nama kontestan, satu per baris. Klik Shuffle. Baris pertama dari output adalah pemenang Anda, yang kedua adalah runner-up, dan seterusnya. Implementasi Fisher-Yates menggunakan Math.random, yang seragam secara statistik tetapi tidak aman secara kriptografis. Untuk undian hadiah dengan implikasi hukum, jalankan shuffle di server menggunakan CSPRNG.
Mempersiapkan kolom CSV
Ketika file CSV memiliki SKU produk yang tidak diurutkan atau ID pelanggan dalam kolom, salin kolom ke editor teks, tempel di sini, urutkan secara numerik, dan tempel kembali. Mode numerik menangani SKU seperti 9, 10, 100 dengan benar (leksikografis akan mengurutkannya 10, 100, 9, yang jarang Anda inginkan).
Membandingkan dua daftar untuk item yang hilang
Urutkan kedua daftar dengan opsi yang sama (A ke Z, Case insensitive, Trim Whitespace). Tempelkan berdampingan ke alat diff. Item yang muncul dalam satu daftar tetapi tidak yang lain menjadi jelas. Ini lebih cepat daripada memindai secara manual daftar yang tidak diurutkan dan berfungsi bahkan ketika kedua daftar memiliki ribuan entri.
Mengurutkan backlog atau daftar todo
Ketika Anda menulis daftar todo di editor teks biasa dan ingin kembali dalam urutan prioritas atau alfabet, tempel ke sorter. Gunakan Longest First untuk menampilkan tugas multi-langkah di atas, atau Shortest First untuk membersihkan kemenangan mudah terlebih dahulu. Reverse Order berguna ketika daftar asli sudah diurutkan tetapi ke arah yang salah.
Jebakan umum
Pengurutan leksikografis vs numerik
Pengurutan A-ke-Z default membandingkan string karakter demi karakter, jadi 10 datang sebelum 9 karena 1 datang sebelum 9 di ASCII. Untuk data numerik, gunakan mode Numeric sebagai gantinya. Untuk data alfanumerik campuran seperti file2.txt vs file10.txt (natural sort), alat ini tidak mendukung natural sort secara langsung. Anda dapat memalsukannya dengan zero-padding nomor sebelum mengurutkan.
Sensitivitas huruf default ke aktif
Secara default, pengurutan peka huruf besar/kecil: Apple disortir sebelum apple karena A huruf besar (65) datang sebelum a huruf kecil (97) di ASCII. Jika Anda ingin pengurutan tidak peka huruf (alfabet tanpa memperhatikan kapitalisasi), centang kotak centang Case insensitive sebelum mengklik Sort Lines.
Whitespace tertinggal merusak dedup
apple dan apple (dengan spasi tertinggal) adalah string yang berbeda, sehingga dedup mempertahankan keduanya. Selalu centang Trim Whitespace bersama Remove Duplicates ketika berhadapan dengan data yang ditempelkan, jika tidak jumlah dedup akan dilebih-lebihkan oleh apa yang terlihat seperti baris identik.
Pengurutan sadar-lokal tidak didukung
Alat ini menggunakan urutan code-point Unicode default, yang benar untuk bahasa Inggris dan banyak bahasa Eropa tetapi tidak untuk bahasa Jerman (ä, ö, ü), Swedia (å, ä, ö), Spanyol (ñ), atau skrip apa pun dengan aturan kolasi. Untuk pengurutan yang benar-lokal, gunakan spreadsheet atau bahasa pemrograman dengan dukungan Intl.Collator.
Pengurutan stabil dijamin sejak 2019
Array.prototype.sort menjadi stabil di semua browser utama mulai dari Chrome 70 (2018) dan Firefox 65 (2019). Sebelum itu, elemen yang sama dapat disusun ulang secara tak terduga, yang merusak alur kerja apa pun yang bergantung pada urutan penyisipan. Alat ini bergantung pada jaminan stabil modern, sehingga baris yang sama tetap dalam urutan relatif aslinya.
Normalisasi Unicode mempengaruhi kesetaraan
Karakter é dapat dikodekan sebagai code point tunggal (U+00E9) atau sebagai e plus aksen akut penggabung (U+0065 U+0301). Mereka terlihat identik tetapi merupakan urutan byte yang berbeda, jadi dedup tidak akan mencocokkannya. Jika data Anda mencampur kedua bentuk, normalkan dengan NFC dalam bahasa pemrograman terlebih dahulu, atau harapkan duplikat untuk bertahan dari pass dedup.
Privasi dan penanganan data
Setiap baris yang Anda tempel diurutkan di browser Anda oleh fungsi JavaScript kecil. Tidak ada data yang meninggalkan perangkat Anda. Kami tidak mencatat input, menyimpan output, menjalankan analitik yang terkait dengan konten teks, atau memuat SDK pihak ketiga yang dapat membaca textarea. Tombol Copy Result dan Download .txt berinteraksi dengan sistem operasi Anda melalui API gestur pengguna standar (Clipboard API dan trik ) dan tidak terlihat oleh pihak luar.
Setelah halaman dimuat, alat bekerja offline. Anda dapat memutuskan dari jaringan, membuka di jendela pribadi, menjalankan di dalam sandbox perusahaan, atau menggunakan mode pesawat di penerbangan, dan pengurutan akan tetap selesai. Ini membuat alat aman untuk daftar klien rahasia, SKU internal, dan data apa pun yang seharusnya tidak pernah menyentuh server pihak ketiga.
Saat tidak menggunakan pengurut baris
Mengurutkan kolom spreadsheet dengan sel terkait
Jika kolom A berisi nama dan kolom B berisi alamat email yang cocok, menyalin hanya kolom A di sini dan mengurutkan akan menyinkronkan hubungan baris. Gunakan pengurutan bawaan spreadsheet yang memindahkan seluruh baris bersama-sama. Pengurutan baris untuk teks mandiri, tidak bergantung pada baris.
Dataset yang sangat besar (jutaan baris)
Alat menyimpan seluruh input dan output dalam memori dan berjalan secara sinkron, yang dapat membekukan tab browser pada input jutaan baris. Untuk dataset ukuran itu, gunakan urutan baris perintah (Unix sort, sort -u, sort -n) yang menangani file besar secara sembarang melalui external merge sort.
Data streaming real-time
Jika baris baru tiba setiap detik (seperti feed log langsung atau aliran websocket), alat ini tidak dapat mengikuti. Ini dirancang untuk pemrosesan batch teks statis. Untuk pengurutan streaming gunakan database dengan indeks terurut, atau bahasa pemrograman dengan antrian prioritas.
Data terstruktur (JSON, CSV dengan tanda kutip)
Array JSON, file CSV dengan koma tertanam di dalam bidang yang dikutip, atau elemen XML tidak aman untuk diurutkan sebagai teks biasa karena delimiternya membentang banyak baris. Gunakan sorter sadar-JSON, parser CSV, atau jq untuk pengurutan data terstruktur.
Lebih banyak pertanyaan
Algoritma sortir mana yang digunakan alat?
Alat menggunakan Array.prototype.sort bawaan browser, yang merupakan TimSort di V8 (Chrome, Edge, Node.js sejak 2018) dan merge sort khusus di SpiderMonkey (Firefox). Keduanya stabil, kasus terburuk O(n log n), dan dioptimalkan untuk data dunia nyata yang sebagian terurut. Anda hampir pasti tidak dapat mengalahkan mereka dengan implementasi JavaScript khusus.
Bisakah saya mengurutkan berdasarkan lokal (Jerman, Swedia, Cina)?
Tidak di alat ini. Kami menggunakan urutan code-point Unicode default. Untuk pengurutan sadar-lokal (Swedia å setelah z, Jerman ß sebagai ss, Spanyol ñ setelah n), gunakan spreadsheet dengan pengaturan lokal, atau Intl.Collator JavaScript dalam skrip khusus. Alat ini dimaksudkan untuk alur kerja default-Inggris.
Seberapa acak opsi Shuffle sebenarnya?
Shuffle menggunakan algoritma Fisher-Yates (Knuth 3.4.2) dengan Math.random sebagai sumber entropi. Math.random di browser modern menggunakan xorshift128+ (Chrome sejak 2015), yang seragam secara statistik dan lulus tes keacakan, tetapi tidak aman secara kriptografis. Untuk undian hadiah atau apa pun dengan bobot hukum, gunakan crypto.getRandomValues atau CSPRNG sisi server.
Apakah ada jumlah maksimum baris?
Tidak ada batas keras. Alat dengan nyaman menangani 100.000 baris di laptop mid-range. Pada 1 juta baris, harapkan jeda satu hingga tiga detik saat browser melakukan pengurutan. Di atas itu, textarea itu sendiri menjadi penghambat, dan alat mungkin sebentar menggantung tab. Gunakan alat baris perintah untuk dataset yang sangat besar.
Mengapa pengurutan numerik saya menempatkan 1.5 antara 1 dan 2?
Pengurutan numerik mem-parse angka awal menggunakan parseFloat, yang mengenali titik desimal (1.5), notasi ilmiah (1e3), negatif (-5), dan unit tertinggal yang diabaikan setelah digit. Jika hasilnya bukan angka, baris pergi ke akhir. Perilaku ini cocok dengan harapan kebanyakan pengguna tetapi bisa mengejutkan Anda dengan daftar campuran bilangan bulat-dan-desimal.
Akankah pengurutan memodifikasi input asli saya?
Tidak. Textarea input tidak tersentuh. Output yang diurutkan muncul di textarea hanya-baca terpisah. Anda dapat mengurutkan input yang sama beberapa kali dengan mode atau opsi berbeda tanpa kehilangan aslinya. Tombol Clear adalah satu-satunya cara untuk menghapus input, dan tidak meminta konfirmasi, jadi gunakan dengan sengaja.