Satır Sıralayıcı
Satırları alfabetik olarak, uzunluğa göre, ters veya rastgele sırala
Giriş satırları
Sıralanmış satırlar
Satır Sıralama Nedir?
Satır sıralama, bir metin bloğundaki satırları belirli bir kurala göre yeniden düzenleme işlemidir: alfabetik sıra, ters sıra, satır uzunluğu veya rastgele karıştırma. Satırları çevrimiçi sıralamak, günlük dosyaları, CSV verileri, yapılandırma listeleri veya sıranın önem taşıdığı düz metin içeriklerle çalışırken sık karşılaşılan bir görevdir. İşlem, metni yeni satır karakterlerine göre böler, elde edilen diziye bir karşılaştırma işlevi uygular ve sıralanmış satırları tekrar birleştirir.
Çoğu programlama dili, karakterleri Unicode kod noktalarına göre karşılaştıran sözlüksel (lexicographic) sıralamayı varsayılan olarak kullanır. Bu, büyük harflerin küçük harflerden önce gelmesi anlamına gelir ("Muz" büyük M ile "elma"dan önce gelir) ve rakamlar harflerden önce sıralanır. Doğal sıralama veya harmanlama olarak da adlandırılan yerel ayara duyarlı sıralama, dile özgü kurallar uygulayarak bunu düzeltir. JavaScript'in localeCompare() işlevi, Python'ın locale.strxfrm() işlevi ve LC_COLLATE ile kullanılan POSIX sort komutu yerel ayara duyarlı sıralama sağlar.
Uzunluğa göre sıralama, bir listedeki en kısa veya en uzun girişleri bulmak, günlük çıktısındaki aykırı değerleri tespit etmek ya da öğeleri karmaşıklıklarına göre düzenlemek için kullanışlıdır. Ters sıralama, mevcut satır sırasını alfabetik bir yeniden düzenleme yapmadan tersine çevirir; bu, Z-A alfabetik sıralamasından farklıdır. Rastgele karıştırma, her satıra rastgele bir sıralama anahtarı atayarak her çalıştırmada farklı bir sıra üretir. Modlar arasında geçiş yapmak, her defasında ayrı bir betik yazmaktan çok daha hızlıdır.
Bu Satır Sıralayıcıyı Neden Kullanmalısınız?
Metninizi yapıştırın, bir sıralama modu seçin ve sonucu anında alın. Komut satırı kurulumu yok, betik dosyası yok, paket yüklemesi yok.
Satır Sıralayıcı Kullanım Alanları
Satır Sıralama Modları Referansı
Bu araç altı sıralama modunu destekler. Aşağıdaki tablo her modun açıklamasını, kullandığı karşılaştırma yöntemini ve şu giriş listesi için örnek sonucu göstermektedir: elma, muz, kiraz, hurma, incir.
| Mod | Açıklama | JS Yöntemi | Örnek Çıktı |
|---|---|---|---|
| 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 |
Arka Planda Sıralama Algoritmaları
JavaScript'te Array.sort() çağırdığınızda, V8 motoru (Chrome, Node.js) 2019'dan bu yana Timsort kullanmaktadır. Diğer çalışma zamanları farklı algoritmalar kullanır. Aşağıdaki tablo, programlama dili standart kütüphanelerinde en yaygın kullanılan sıralama algoritmalarını karşılaştırmaktadır. Hepsi, bu aracın satır sıralama yüklerini tipik girdiler (100.000 satırın altı) için bir milisaniyenin altında gerçekleştirir.
| Algoritma | Kullananlar | Zaman | Notlar |
|---|---|---|---|
| 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 |
Kod Örnekleri
JavaScript, Python, Go ve komut satırında satırları programatik olarak sıralayın. Her örnek alfabetik, uzunluk tabanlı ve ters sıralamayı kapsamaktadır.
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