The Median Maintenance Problem

From NovaOrdis Knowledge Base
Revision as of 22:38, 9 October 2021 by Ovidiu (talk | contribs) (→‎Solution)
Jump to navigation Jump to search

Internal

Problem

Give a sequence of numbers x1, x2, .... xn, report at each step the median number of numbers seen so far, at each step i.

Discussion

The problem can be resolved by repeatedly solving the selection problem on the set of numbers seen so far, but the selection problem has a running time of O(n), so repeating the selection algorithm for each number will have a running time of O(n2). The median maintenance problem is a canonical use case for a heap.

Solution

Use two heaps: a max heap Hlow that supports the REMOVE-MAX operation and a min heap Hhigh that supports the REMOVE-MIN operation. Maintain the first smallest half elements in Hlow