Abstract
We consider the following problem: Given an unsorted array of n elements, and a sequence of intervals in the array, compute the median in each of the subarrays defined by the intervals. We describe a simple algorithm which needs O ( n log k + k log n ) time to answer k such median queries. This improves previous algorithms by a logarithmic factor and matches a comparison lower bound for k = O ( n ) . The space complexity of our simple algorithm is O ( n log n ) in the pointer machine model, and O ( n ) in the RAM model. In the latter model, a more involved O ( n ) space data structure can be constructed in O ( n log n ) time where the time per query is reduced to O ( log n / log log n ) . We also give efficient dynamic variants of both data structures, achieving O ( log 2 n ) query time using O ( n log n ) space in the comparison model and O ( ( log n / log log n ) 2 ) query time using O ( n log n / log log n ) space in the RAM model, and show that in the cell-probe model, any data structure which supports updates in O ( log O ( 1 ) n ) time must have Ω ( log n / log log n ) query time. Our approach naturally generalizes to higher-dimensional range median problems, where element positions and query ranges are multidimensional—it reduces a range median query to a logarithmic number of range counting queries.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have