Bir dizi ortanca eleman bulmak için her zamanki basit bir algoritma ve sayıları geçerli:n
- Örnek gelen elemanlar içine değiştirilmesi ile A B
- Sıralama ve rütbe bulmak elemanları ve ait| B | ± √ lrB
- Bu kontrol ve medyan zıt tarafları üzerinde bulunan ve en fazla olduğu eleman arasındaki ve bazı uygun sabiti . Bu olmazsa başarısız olun.r A C √ AlrC>0
- Aksi takdirde, öğelerini ve arasında sıralayarak medyanı bulunl r
Bunun doğrusal zamanda çalıştığını ve yüksek olasılıkla başarılı olduğunu görmek zor değil. (Tüm kötü olaylar, bir binom beklentisinden uzak büyük sapmalardır.)
Hızlı sıralama görmüş öğrencilere öğretilmesi daha doğal olan aynı problem için alternatif bir algoritma burada açıklanan algoritmadır: Rastgele Seçim
Bunun doğrusal beklenen çalışma süresine sahip olduğunu görmek de kolaydır: "yuvarlak" ın, 1 / 4-3 / 4 ayrımı verdiğinde sona eren yinelemeli çağrıların bir sırası olduğunu ve beklenen uzunluğun bir tur en fazla 2'dir. (Bir turun ilk çekilişinde, iyi bir bölünme elde etme olasılığı 1/2'dir ve daha sonra algoritmanın açıklandığı gibi yuvarlak uzunluğa geometrik rastgele bir değişken hakim olduğu için gerçekte artar.)
Şimdi soru:
Randomize seçimin yüksek olasılıkla doğrusal zamanda çalıştığını göstermek mümkün müdür?
Biz mermi ve her tur en az uzunluğa sahiptir olasılıkla en fazla bağlanmış bir birlik çalışma süresi olduğu verir, böylece olasılığı ile .k 2 - k + 1 O ( n, log günlük n ) 1 - 1 / O ( giriş n )
Bu bir tür tatmin edici değil, ama aslında gerçek mi?