【发布时间】:2016-01-02 22:07:34
【问题描述】:
我目前正在尝试找出最适合使用的数据结构。所以这就是我想要做的:
我有一个对象和一个与该对象关联的值。我希望能够知道结构中哪个条目的值最小。
例如,如果我有以下对象:
ZebraObject, 10
CowObject, 1
DogObject, 2
我希望能够知道哪个对象具有最小值(在本例中为 CowObject)。我还必须访问 CowObject 中的数据(调用一些函数,进行一些计算等),最后,我将执行类似“value += value”的操作。所以在我访问了 CowObject 之后,数据看起来像
ZebraObject, 10
CowObject, 2 // (1 + 1)
DogObject, 2
谁能帮我找出最适合这种情况的数据结构?
编辑:我假设每个元素(至少对于对象)都是唯一的。与对象关联的浮点值可以重复。
【问题讨论】:
-
您似乎需要一个最小堆。在这种情况下,您的最小对象将位于堆顶部,并且需要 O(1) 时间才能获得其值
-
我完全忘记了最小堆!非常感谢!!
-
@SerhiyChupryk,根据您的建议,值 1,2,10 将被视为键,minheap 将是理想的,但目前 OP 正试图考虑随着时间的推移修改这些键并且将包含重复键。哦,是的,最小/最大堆可以包含重复项。我一开始的思考过程认为 ZebraObject、CowObject、DogObject 是键,10、1、2 是值。我应该换个思路。 (感谢您指出 minheap)
-
你遇到过
SortedSet<T>吗? -
@tomab 我刚刚检查过了。但是我似乎为了使用 SortedSet,我需要使浮点值成为 Object 的成员。
标签: c# data-structures