我需要一个相当专业的收集.NET,我不认为BCL可以帮助我,但我认为我会抛出它,因为如果有人知道类似的东西。.NET中是否存在排序的队列?
基本上,我的要求是这样的:
- 我有对值的,如的列表:(3,10),(5,10),(3,7),(5, 5)
- 订单是重要的,即。 (3,10)!=(10,3)
- 单个值的重复项很好,但应该删除重复对(最好是静默)。
- 踢球者,我需要这个列表一直排序。我只对任何时候排序算法定义的列表中的第一个值感兴趣。
所以,我希望能够做(因为我设想它可能会被执行,其他适合以上的罚款,以实现)一些示例代码:
public class Pair
{
public Pair(int first, int second)
{ First = first; Second = second; }
public int First { get; set; }
public int Second { get; set; }
}
SortedQueue<Pair> foo = new SortedQueue<Pair>((left, right) => {
return right.First - left.First;
});
foo.Add(new Pair(10, 3));
foo.Add(new Pair(4, 6));
foo.Add(new Pair(6, 15));
foo.Add(new Pair(6, 13)); // This shouldn't cause a problem
Pair current = foo.Shift(); // current = (4, 6)
请参阅“.Net中的优先队列”,http://stackoverflow.com/questions/102398/priority-queue-in-net – 2009-09-19 10:37:24
Thankyou的正确名称和链接。现在我查看了维基百科的文章,我正在考虑实现它的方式是“简单实现”中列出的两种类型的混合体(保留一个标记以表明它是否已排序,只需追加在插入时,然后在检索前按需要排序)。并感谢dangph链接到一些实际的实现。 – 2009-09-19 10:47:20
为了记录,这也是为了实现A *搜索,这个维基百科文章也有一些注释,所以双重荣誉。 – 2009-09-19 10:48:52