我希望在内存中使用创建和维护等级。
根据分数计算与用户ID和排名相关联的分数。应支持以下功能。
鉴于这些要求,对于哪种数据结构最适合这些要求有什么建议吗?
答案 0 :(得分:8)
我认为您可以使用订单统计树和哈希表的组合非常有效地完成此操作。
订单统计树是一种扩充二进制搜索树,除了按排序顺序存储元素外,还允许通过树中的索引查找元素。也就是说,该结构支持按键的O(lg n)插入,删除和查找值,以及给定其索引的元素的O(lg n)查找。如果您将分数存储在此结构中,则可以轻松插入或更新新分数,以及跟踪树中每个元素的等级。
为了将用户与他们的分数相关联,您可以将此结构与从用户ID映射到包含该用户分数的订单统计树中的节点的辅助哈希表结合起来。除了O(lg n)查找分数排名之外,这还可以让你(1)访问玩家的分数。
希望这有帮助!
答案 1 :(得分:0)
使用内存中的SQLite数据库。
答案 2 :(得分:0)
优先级队列怎么样?
每个人都有一个分数,把它扔进优先级队列,它会按升序/降序优先级/值/等级/等进行排序。
答案 3 :(得分:0)
二分查找树,一个实现 - http://en.wikipedia.org/wiki/AA_tree
Space O(n) O(n)
Search O(log n) O(log n)
Insert O(log n) O(log n)
Delete O(log n) O(log n)