我目前正试图找出哪个数据结构可能是最好的一个。所以这里是我想要做的:支持排序的最佳数据结构
我有一个对象和与此对象相关的值。我希望能够知道结构中的哪个条目具有最小的值。
因此,举例来说,如果我有以下对象:
ZebraObject, 10
CowObject, 1
DogObject, 2
我希望能够知道哪些对象具有最小值(在这种情况下,是CowObject)。我还必须访问CowObject中的数据(调用一些函数,进行一些计算等),最后,我会做一些类似'value + = value'的事情。我访问的CowObject所以后,数据会看起来像
ZebraObject, 10
CowObject, 2 // (1 + 1)
DogObject, 2
谁能帮我找出最佳的数据结构的这种情况呢?
编辑:我假设每个元素(至少对于对象)都是唯一的。与对象关联的浮点值可以是重复的。
看来你需要一个小小的堆。在这种情况下,你的最小对象将在堆的顶部,它将需要O(1)时间来获得它的值 –
我完全忘记了最小堆!非常感谢你!! – dwnenr
@SerhiyChupryk,根据你的建议,值1,2,10将被视为键和minheap将是理想的,但目前的OP正在试图考虑随着时间的推移修改这些键,并将包含重复的键。哦,是的,最小/最大堆可以包含重复项。我在开始的思考过程中认为ZebraObject,CowObject,DogObject是键,而10,1,2是值。我应该想到另一种方式。 (感谢指出minheap) –