Структура данных, поддерживающая быструю вставку и вычисление медианы

Мне нужна структура данных, которая поддерживает следующие операции:

  1. Вставить число;
  2. Найти медиану всех вставленных чисел;
  3. (дополнительно) Найти заранее известный квантиль (0-1) всех вставленных чисел;

Самый простой способ - сортировка чисел после каждой вставки, но это не быстро. Есть ли более быстрое решение?


Ответы (2 шт):

Автор решения: Igor

Что такое "быстро" - каждый понимал по-своему. A.Гайдар "Чук и Гек"

Вставляйте сразу на нужное место, тогда сортировать ничего не придется. Вставка в сортированный список - O(logN).

→ Ссылка
Автор решения: becouse

Самый быстрый вариант в смысле поиска и добавления это бинарное поисковое дерево.

  • Вставка O(logN)
  • поиск медианы O(logN)
  • поиск квантиля (выводится из медианы) O(logN)

Создание бинарного дерева на Java

Поиск медианы в бинарном дереве.

→ Ссылка