Select

by Jerry Sky

2020-03-23



Description

Select jest pięknym przykładem nietrywialnego wykorzystania metodologii dziel i zwyciężaj.

Składa się on z 5 kroków (w tym dwa rekurencyjne).

Algorithm

  1. Najpierw znajdowany jest element xx tablicy AA zwany medianą median, dla którego zapewnione jest, że liczba elementów tablicy AA większych od xx jest nie mniejsza niż 3n106\frac{3n}{10} - 6.
  2. Następnie wykorzystuje się element xx jako pivot do procedury partition i wykonuje dalsze dalsze kroki podobnie jak to miało miejsca w przypadku algorytmu RandomSelect.

Complexity

Dzięki temu, że mediana median xx jest wykorzystywana jako pivot możemy pokazać, że liczba porównań T(n)T(n) (dla nn odpowiednio dużego) jest zadana następującą rekurencją: T(n)T(n5)+T(n(3n106))+Θ(n) T(n) \le T\left(\left\lceil\frac{n}{5}\right\rceil\right) + T\left(n - \left(\frac{3n}{10} - 6\right)\right) + \Theta(n) Rozwiązując tę rekurencję metodą dowodu indukcyjnego możemy pokazać, że algorytm Select działa w złożoności O(n)O(n) (Worst Case Analysis).

Więcej informacji tutaj oraz tutaj (9.3).