我认为我正在搜索的算法有一个共同的名称。
我有一个按照他们的分数排序的球员名单。例如100万或10亿玩家。 每一秒玩家都会改变其分数,我希望更新排序列表以保持排序,我希望知道一个新的玩家位置。
我可以更新分数并重新排序孔列表。 (效率不高) 或者我可以从[oldpos,newpos]重新排序(更好) 或者我可以移动球员并转移其他球员。 (最好)
这种算法有名称吗?
正确的数据库是否无法有效地处理该任务是正确的,我必须在Java,C#,Go等中开发服务,这样可以将排序列表保存在RAM中并进行转换?
答案 0 :(得分:3)
您可以持有https://www.example.com,插入和删除操作在此类数据结构上占用O(logn)时间。每次需要更新播放器时:从树中删除,更改分数,插入树。
这是您正在寻找的确切权衡,所有操作都需要O(logn),因为您需要所有操作(查找和更新 - 删除\插入),这是最适合您的。内存消耗为O(n)btw。