如果对于我的特定应用程序(输入,查找和排序速度是优先级)而言内存不是问题,那么什么样的数据结构/场排名表?C数据库设计,可以按多个字段排序
例如,假设我想创建一个游戏名人堂,可以根据最高分数(与用户名无关),用户名(可以按同一用户的所有分数排在一起,然后按用户的最高分数排序) ,或达到的水平(独立于分数或名称)。在这个例子中,如果我按照每个玩家的最高分排序链接列表,矢量或任何其他连续的数据结构,它会搜索其他字段 - 比如级别和非最高分数 - 更迭代(即迭代所有人都在寻找舞台,或寻找特定的分数范围),除非我想出一些其他方式来存储输入新数据时排序的信息。
问题是在C/C++中是否有更高效(尽管是复杂的和内存消耗)的方法或数据库结构,可能为这种多字段排序启动。链接列表对于简单的分数排名似乎很好,我甚至可以通过对单个字段(玩家名称或达到的级别)进行散列来组织一个散列表,以便按单个字段进行排序,但其他字段则用O(N)来查找,更糟的是要排序。只有三个字段,我想知道是否有方法(如集合或二级列表),以防止事先知道的某些预先想要的类型迭代。
感谢您的好建议!我觉得,由于名称数量如此之多,按名称对分组进行分组是非常重要的特性,我可能希望按名称进行哈希分类,但将分数保留在每个名称下始终进行排序。指向下一个得分最高的球员是否是一种糟糕的设计形式,可以让每个球员节点都有指针,从而保持球员的高分排名?最后,针对您的索引建议 - 考虑到显示结果是最常见的操作,您认为值得保持索引结构始终分类吗?你会为他们使用树吗? – Cindeselia 2012-03-12 03:02:46