database - 更新排序列表

标签 database algorithm sorting microservices sortedlist

我认为我正在搜索的算法有一个通用名称。

我有一个很大的玩家名单,按得分排序。例如,一百万或十亿玩家。 每隔一个玩家就会改变其分数,我希望更新排序列表以保持其排序,并且我希望知道新的玩家位置。

我可以更新得分并重新排序洞列表。 (效率不高) 或者我可以从 [oldpos, newpos] 重新排序(更好) 或者我可以移动玩家并移动其他玩家。 (最佳)

这种算法有名称吗?

常规数据库无法有效地处理该任务,我必须用 Java、C#、Go 等开发服务,将排序列表保留在 RAM 中并进行轮类,这是正确的吗?

最佳答案

您可以持有 AVL tree ,在这种数据结构上的插入和删除操作花费了 O(logn) 时间。每次您需要更新玩家时:从树中删除、更改分数、插入到树中。

这正是您正在寻找的权衡,所有操作都需要 O(logn),并且由于您需要所有操作(查找和更新 - 删除\插入),因此这是最适合您的。顺便说一句,内存消耗是 O(n)。

关于database - 更新排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167750/

相关文章:

mysql - 使用另一个表的过滤器从 Union x 3 中选择

PHP远程MySQL数据库连接非常慢

perl - 按字母数字排序对哈希键进行排序

database - Oracle 在两次使用同一列时无法正确排序

javascript - ExtJS 5.0.1 排序数据存储

java - JPA更新表结构-数据发生了什么

MySQL INSERT 速记与普通性能

arrays - 面试题: Even and odd elements at even and odd positions (keep elements order)

c - 替换/删除图中的循环

c - 反转列表的更简单和更快的代码?