Можливий дублікат:
середній алгоритм прокатки в С
Враховуючи, що цілі числа читаються з потоку даних. Знайдіть медіану елементів, прочитаних на сьогодні, ефективно.
Прочитане нами рішення: Ми можемо використовувати максимальну купу на лівій стороні для представлення елементів, менших за ефективну медіану, і міні-купу на правій стороні, щоб представити елементи, що перевищують ефективну медіану.
Після обробки вхідного елемента кількість елементів у купи відрізняється щонайменше на 1 елемент. Коли обидва купи містять однакову кількість елементів, ми знаходимо середнє значення кореневих даних купи як ефективну медіану. Коли купи не збалансовані, ми вибираємо ефективну серединку з кореня купи, що містить більше елементів.
Але як би ми побудували максимальну купу і міні-купу, тобто як ми могли б знати ефективну медіану тут? Я думаю, що ми б вставили 1 елемент у max-heap, а потім наступний 1 елемент у min-heap і так далі для всіх елементів. Виправте мене, якщо я тут помиляюся.