Я думаю, что вы можете сделать это очень эффективно, используя комбинацию дерева статистики заказов и хеш-таблицы.
Статистическое дерево заказов - это расширенное двоичное дерево поиска, которое в дополнение к хранению элементов в отсортированном порядке позволяет искать элементы по их индексу в дереве. Таким образом, структура поддерживает O (lg n) вставку, удаление и поиск значений по их ключу, а также O (lg n) поиск элемента по его индексу. Если вы сохраняете баллы в этой структуре, вы можете легко вставлять или обновлять новые баллы, а также отслеживать ранг каждого элемента в дереве.
Чтобы связать пользователей с их оценками, вы могли бы объединить эту структуру со вспомогательной хэш-таблицей, отображающей идентификаторы пользователей на узлы в дереве статистики заказов, в котором хранятся оценки для этого пользователя. Это даст вам O (1) доступ к счету игрока в дополнение к O (lg n) поиску рейтинга.
Надеюсь, это поможет!