【发布时间】:2010-08-20 15:53:17
【问题描述】:
我的代码处理大量值,我正在寻找一种有效的结构来跟踪前 (N) 值,其中 N 小于 10,因此收集所有数字然后对列表进行排序并取第一个(N) 可能不是最有效的方式。
为此,我正在构建一个固定大小 N 的集合,以保持前 (N) 值按降序排序。如果 value 高于任何现有值(在这种情况下,最后一个元素被删除)或集合未满,则排序集合的 Add(T value) 方法会将 value 添加到集合中。
我能够使用双重LinkedList<T> 实现我想要的,因为它具有快速插入和删除功能,但我想知道使用SortedDictionary<TKey, TValue> 还是优先队列会更好?
谢谢。
【问题讨论】:
-
如果您谈论的是 N
-
请坚持您的初始实施。对于这个问题,LinkedList 和二进制替换将是最好的!
标签: c# arrays algorithm sorting collections