Üniversite kütüphanesinde çalışıyorsunuz.
Sakin bir öğle sonrasının ortasındasınız
derken 1280 adet farklı kitap sevkiyatı geliyor.
Kitaplar, uzun düz bir sıra hâlinde indiriliyor
ancak sıraları bozuk hâlde,
üstelik otomatik sıralama sistemi de arızalı.
Bu da yetmezmiş gibi dersler yarın başlıyor,
yani sabah erkenden
öğrenciler bu kitaplar için sıraya girmeye başlayacak.
Hepsini vaktinde nasıl sıralayabilirsiniz?
İlk yol sıranın bir ucundan ilk iki kitapla başlamak olur.
Eğer ilk iki kitap sıralı ise oldukları gibi bırakın.
Değilse değiştirin.
Sonra ikinci ve üçüncü kitaplara bakın,
işlemi tekrar edin
ve sıranın sonuna gelene kadar devam edin.
Bir noktada, en sonda olması gereken kitaba denk gelirsiniz
ve onu, sonrasında gelen her kitapla değiştirip
kitap doğru yere gelene kadar aşağıya kaydırarak devam edin.
Sonra en başa dönün ve işlemi
sondan ikinci kitap yerini bulana kadar tekrarlayın
ve bütün kitaplar sıralanana kadar devam edin.
Bu yönteme "kabarcık sıralama" denir.
Basit ama yavaştır.
İlk seferde 1279 karşılaştırma yapmış olursunuz,
sonra 1278 olur ve toplamda
818.560 karşılaştırmaya ulaşır.
Her karşılaştırma bir saniye alsa işlem dokuz günden fazla sürer.
İkinci bir yol sadece ilk iki kitabı sıralayarak başlamak olur.
Sonra üçüncü kitabı alıp ikinci sıradaki kitapla karşılaştırın.
İkinci kitaptan önce ise yerlerini değiştirin,
sonra onu ilk sıradaki kitapla karşılaştırın,
gerekirse yerini değiştirin.
Şimdilik ilk üç kitabı sıraladınız.
Her seferinde, sıralanan tarafa yeni bir kitap eklemeye devam edin,
yeni kitabı bir önceki kitapla karşılaştırıp değiştirerek
o zamana kadar sıralananların arasına doğru şekilde yerleşene kadar.
Buna "eklemeli sıralama" denir.
Kabarcık sıralamanın aksine, her çifti karşılaştırmayı gerektirmez.
Ortalama olarak her kitabı, sadece kendinden önce gelen kitapların
yarısıyla karşılaştırmamız gerekir.
Bu durumda toplam karşılaştırma sayısı
409.280 olup
yaklaşık beş gün sürer.
Hâlâ çok fazla karşılaştırma yapıyorsunuz.
İşte size daha iyi bir fikir:
Önce rastgele bir kitap seçin.
Buna "parça" deyin ve diğer bütün kitaplarla karşılaştırın.
Sonra sırayı ikiye bölün,
parçadan önce gelen bütün kitapları sol tarafa,
parçanın ardından gelen bütün kitapları da sağ tarafa koyun.
Soldaki bütün kitapları
sağdaki kitaplarla tekrar tekrar karşılaştırmak zorunda kalmayıp
hayli zaman kazandınız.
Şimdi de sadece soldaki kitaplara bakın,
yine rastgele bir parça kitap seçebilir
ve öncesinde kalan kitapları sonra gelenlerden ayırabilirsiniz.
Bu şekilde alt parçalar oluşturmaya
küçük bir alt grup elde edene kadar devam edip
bunları "yerleştirmeli sıralama" gibi bir yöntemle hızlıca sıralayabilirsiniz.
Her parçalama işlemi yaklaşık 1280 karşılaştırma gerektirir.
Eğer parçalar eşit dağılmışsa
kitapları on kitaplık 128 alt gruba bölmek yedi sefer
ya da 8960 saniye gerektirir.
Alt grupları tasnif etmek her birine yaklaşık 22 saniye ekler.
Neticede, "hızlı sıralama" olarak bilinen bu yöntem
kitapları üç buçuk saatin altında sıralayabilir.
Ancak tek sorunu var.
Parçalar orantısız olursa hiç zaman kazanamazsınız.
Neyse ki bu nadiren olur.
Bundan dolayı hızlı sıralama günümüzde programcıların kullandığı
en etki yöntemlerdendir.
İnternet mağazalarında ürünleri fiyata göre sıralama
veya belirli bir konuma yakın olan benzin istasyonlarının
uzaklık sıralamasında kullanırlar.
Sizin durumunuzda hızlı sıralamayla geriye zamanınız bile kalır.
Kütüphanede yüksek riskli günlerden birisi daha.