Сортировка массива в реальном времени - PullRequest
2 голосов
/ 14 сентября 2011

Это был вопрос для интервью.

"Получает 1000 заявок в секунду за акцию. Хотите сохранить 50 лучших заявок и рассчитать среднее. Как?"

1 Ответ

12 голосов
/ 14 сентября 2011

Вы не будете "сортировать в реальном времени". Вы, вероятно, до сих пор использовали бы структуру данных heap (очередь приоритетов) из первых 50 заявок. Если следующая ставка выше минимума, вы должны удалить мин, а затем вставить новую ставку. Очередь приоритетов позволяет быстро найти минимальное значение, удалить его и добавить новое значение.

Вы можете сохранить среднее значение, добавив 1/50 разницы между новой ставкой и уходящей (только тогда, когда новая ставка лучше, чем 50-я самая высокая ставка).

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