Data structures 实现高crores表的最佳数据结构是什么

Data structures 实现高crores表的最佳数据结构是什么,data-structures,Data Structures,我正在尝试实现一个游戏的高分表。我认为最好的解决方案是创建一个链表,然后在表中插入新的分数,然后在列表中运行到该点,并将所有排名向下移动一个。有更好的替代方案吗?我认为最好的解决方案是使用a(通常使用a实现),这样就可以简单地添加新分数,数据结构将为您排序 我想说,一个平衡的二叉搜索树(红黑/AVL)和手指(指向树中的最大值)将非常有效。您可以在O(1)中获得最高分数,通过获取前置节点(在BVS中很简单),您可以获得任意多的高分 如果您有很多分数,并且希望能够选择x最高分,这将非常有用。如果您想

我正在尝试实现一个游戏的高分表。我认为最好的解决方案是创建一个链表,然后在表中插入新的分数,然后在列表中运行到该点,并将所有排名向下移动一个。有更好的替代方案吗?

我认为最好的解决方案是使用a(通常使用a实现),这样就可以简单地添加新分数,数据结构将为您排序


我想说,一个平衡的二叉搜索树(红黑/AVL)和手指(指向树中的最大值)将非常有效。您可以在O(1)中获得最高分数,通过获取前置节点(在BVS中很简单),您可以获得任意多的高分

如果您有很多分数,并且希望能够选择
x
最高分,这将非常有用。如果您想要有一个获取分数并返回其排名的函数,或者想要询问一般范围查询(即,“给我10到20的排名”),则需要稍微修改结构(保持每个节点中子树的大小并使用该信息)

您的解决方案相当慢,每次插入和查找都需要O(n)个操作。
Heap查找最高分数的速度要快得多,但是,它只会给您最高分数-您必须手动搜索top
x
分数;而且,一般范围的查询不可能高效完成。

取决于您将要使用它做什么以及为获得最佳性能所需的操作等。可以使用链接列表对于初始实现来说很好。但是在我们知道您想要高效地做什么以及此列表的长度之前,很难给您提供一个更优化的示例。您需要多久更新一次分数?这将随着人们在列表中上下移动,以及人们从列表中插入和删除而不断更新分数上的g。@raiyana分数是int还是float?你知道任何人都能得到的最大和最小分数吗?