Zwykły prosty algorytm znajdowania elementu mediany w tablicy liczby to:n
- Próbkuj elementów z z zamianą na B
- Sortuj i znaleźć rangi elementy i z| B | ± √ lrB.
- Sprawdź, czy i znajdują się po przeciwnych stronach mediany i czy istnieje co najwyżej elementów w między i dla pewnej odpowiedniej stałej . Niepowodzenie, jeśli tak się nie stanie.r A C √ AlrC>0
- W przeciwnym razie, znaleźć mediany sortowania elementów między il r
Nietrudno zauważyć, że przebiega to w czasie liniowym i że z dużym prawdopodobieństwem się udaje. (Wszystkie złe zdarzenia są dużymi odchyleniami od oczekiwań na dwumian.)
Alternatywnym algorytmem dla tego samego problemu, który jest bardziej naturalny dla uczniów, którzy widzieli szybkie sortowanie, jest opisany tutaj: Wybór losowy
Łatwo też zauważyć, że ten ma liniowy oczekiwany czas działania: powiedzmy, że „runda” jest sekwencją wywołań rekurencyjnych, które kończą się, gdy daje się podział 1 / 4-3 / 4, a następnie obserwujemy, że oczekiwana długość runda wynosi co najwyżej 2. (W pierwszym losowaniu rundy prawdopodobieństwo uzyskania dobrego podziału wynosi 1/2, a następnie po rzeczywistym wzroście, tak jak opisano algorytm, więc długość rundy jest zdominowana przez losową zmienną geometryczną).
Więc teraz pytanie:
Czy można wykazać, że losowa selekcja przebiega w czasie liniowym z dużym prawdopodobieństwem?
Mamy rundy , a każda runda ma długość co najmniej z prawdopodobieństwem co najwyżej , więc granica związku oznacza, że czas działania wynosi z prawdopodobieństwemk 2 - k + 1 O ( n log log n ) 1 - 1 / O ( log n ) .
To trochę niezadowalające, ale czy to w rzeczywistości prawda?