唯一有序数据结构

时间:2012-04-14 15:26:58

标签: data-structures language-agnostic computer-science

使用什么是最佳数据结构,知道要存储的数据包含固定数量的唯一值,哪些顺序很重要?特别是,我正在尝试最佳地存储52张卡片的状态,其中每张卡片由1到52的数字表示。

5 个答案:

答案 0 :(得分:1)

一个数组/向量可以很好地为你做到这一点。

您可以使用整数标识固定数量的对象(卡片),但可能的整数值之间没有间隙。这允许您使用占用连续内存块的数据结构,并允许基于值(索引)直接访问,并且访问使用整数值的自然排序 - 这完全适合数组/向量

答案 1 :(得分:1)

如果您唯一关心的是表达排列(与自然顺序相对应),您可以选择factorial number system,这是排列的最小可想象表示。

顺便说一句:这不是一个非常实用的解决方案; 52!约为8E67; - )

答案 2 :(得分:0)

如果您想确保集合中的唯一性,可以在Java中使用LinkedHashSet 我希望其他语言/图书馆有类似的

答案 3 :(得分:0)

鉴于订单很重要并且有固定数量的元素,那么只需使用一系列卡片,如下所示:

Card[] cards = new Card[52];

确保从0到51的索引,在大多数编程语言中,它比从1到52的索引更简单。

答案 4 :(得分:0)

您只需要一个226位整数加上一个编号方案,用于将套牌映射到其可能的排序。

Storing a message in a deck of cards

Detailed explanation of the above link

key-deck(简单的Python代码)