Как найти медиану одномерного массива?

Приветствую. Как найти медиану массива без предварительной сортировки?
  • Вопрос задан
  • 25874 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Eddy_Em
Когда-то давно я стащил из книжки с коллекцией сишных сниппетов быстрый поиск медианы. Вот код. Там не выполняется полная сортировка, а лишь ищется медиана. Если работать с указателями, то при вычислении скользящей медианы вычисления ускоряются.
Ответ написан
Комментировать
Karde
@Karde
Ph.D. student at the GWU & CBI
топик на хабре
в Вашем случае k = [n / 2]
Ответ написан
Комментировать
15432
@15432
Системный программист ^_^
Если заранее известен набор значений элементов массива (0..255), а количество элементов сильно больше набора значений (несколько тысяч), можно использовать гистограмму — считать количество элементов каждого значения (5 нулей, 340 единиц, 210 двоек… ) В гистограмме середину найти значительно проще (будет известно общее количество, достаточно суммировать количества в ячейках до превышения половины от общего числа. Элемент, на котором будет достигнута середина и будет медианой)
Данный подход очень сильно ускоряет медианную фильтрацию изображений с большим радиусом (обновление гистограммы можно нехило оптимизировать, обновляя лишь «края» при переходе к соседнему пикселю)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы