【发布时间】:2011-05-14 11:05:42
【问题描述】:
我正在编写一个特定的优先级队列。它的结构需要如下:
Priority(<int>) Data(List<Object>)
1 a, b, g, h
3 c, d, j
4 k
10 e, f, i
我需要能够有效地查找给定优先级的列表是否存在;如果没有,则创建列表并添加消息,否则将消息附加到现有列表。
我写了一个红黑树,但这似乎有点过头了,可能不是最快的解决方案。它还有一个缺点,就是不能按优先级轻松抓取消息,我需要在编写完成后才能做到这一点。
我想过Dictionary,但除非我弄错了,否则它没有简单的方法来说“如果键__存在,则给我对应的值,否则给我null”。还是我错过了什么?
编辑
我目前的实现是有 32 个固定列表。将适用列表添加到 32 位标志中并设置适用位。我使用 De Bruijn 的算法来获得 LSB。这很有效,但增加了我想减轻的其他复杂性。
【问题讨论】:
-
优先级值的范围是多少? IE。你只有优先级 1-10,还是你有整个 int 值范围?
标签: c# .net sortedlist jump-list