C#中用于查找最大值的最佳数据结构?

时间:2012-12-07 14:12:34

标签: c# data-structures find element max

我需要知道哪个是查找最大值的最佳数据结构,是否在C#中实现?现在我正在使用SortedDictioniry,但它对键进行排序,基本上我不需要对键进行排序,但我需要的是找到最大值的更快方法。在我找到最大值之后,我需要键或对应于该值的索引。此外,如果可以快速插入和快速删除元素,希望不超过O(log n)。是否有这样的结构,我该如何使用它? 谢谢!

3 个答案:

答案 0 :(得分:4)

这听起来就像一个max-heap,有很多关于如何从头实现一个的在线信息(它不是C#标准数据结构的一部分)。

例如,请查看此implementation,并附上详细说明。

答案 1 :(得分:1)

如前所述,效率最高的是max-heap。它不是.Net的一部分,但您可以选择第三方库,例如IntervalHeap(来自http://www.itu.dk/research/c5/

答案 2 :(得分:0)

您可以使用SortedList<TKey, TValue>SortedDictionary<TKey, TValue>(就像您已经做过的那样)。另一种合适的收集类型是Max-Heap;但是,.NET类库不包含一个。

有关MSDN上的比较,另请参阅SortedList and SortedDictionary Collection Types。此外,如果您希望在最大值上拥有快速访问时间,我还没有看到除了按键以某种方式排序之外的其他可能性。