Алгоритм Вопрос по поиску медианы nos - PullRequest
0 голосов
/ 10 июня 2011

При заданной последовательности триллионов действительных чисел на диске ...

Как бы вы вычислили работающий MEDIAN для каждой тысячи записей, т.е.медиана a [0], ...., a [999],

второй точкой будет медиана a [1], ..., a [1000],

третья точка была бы медианой [2], ..., [1001] и т. д.?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Наивное решение на самом деле не так уж и плохо, сохраняйте отсортированный список из 1000 чисел в памяти и каждый раз, когда вы переходите к следующему индексу, удаляйте a[i-1] из отсортированного списка и добавляйте a[i+999] в отсортированный список.

Если у вас есть это, легко вычислить медиану в отсортированном списке.

Вопрос в том, как вы справляетесь лучше?

0 голосов
/ 10 июня 2011

Подсказка: сохраняйте максимальную кучу, в которой хранятся наименьшие 500 из 1000 чисел, и поддерживайте минимальную кучу, в которой хранятся самые большие 500.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...