Вот тот, который может использоваться, когда точный вывод не важен (для целей отображения и т. Д.)
Вам нужен totalcount и lastmedian, а также новое значение.
{
totalcount++;
newmedian=lastmedian+(newvalue>lastmedian?1:-1)*(lastmedian==0?newvalue: lastmedian/totalcount*2);
}
Создает довольно точные результаты для таких вещей, как page_display_time.
Правила: входной поток должен быть сглаженным по порядку времени отображения страницы, большим числом (> 30 и т. Д.) И иметь ненулевое медиану.
Пример:
время загрузки страницы, 800 элементов, 10 мс ... 3000 мс, среднее 90 мс, реальная медиана: 11 мс
После 30 входов средняя ошибка обычно составляет <= 20% (9 мс. 12 мс) и становится все меньше и меньше.
После 800 входов ошибка составляет + -2%. </p>
Другой мыслитель с подобным решением находится здесь: Медианный фильтр Супер эффективная реализация