我需要知道哪个是找到最大值的最佳数据结构,它是用 C# 实现的吗?现在我正在使用 SortedDictioniry 但它对键进行排序,基本上我不需要对键进行排序,但我需要的是一种更快的方法来找到最大值。同样在找到最大值后,我需要与该值对应的键或索引。此外,如果可以快速插入和快速删除元素,希望不超过 O(log n)。有没有这样的结构,我该如何使用它?谢谢!
问问题
503 次
3 回答
1
如前所述,最有效的将是最大堆。它不是 .Net 的一部分,但您可以从第三方库中进行选择,例如IntervalHeap(来自http://www.itu.dk/research/c5/)
于 2012-12-07T14:31:30.677 回答
0
您可以使用 aSortedList<TKey, TValue>
或 a SortedDictionary<TKey, TValue>
(就像您已经使用的那样)。另一种合适的收集类型是 Max-Heap;但是,.NET 类库不包括一个。
有关 MSDN 上的比较,另请参阅SortedList 和 SortedDictionary 集合类型。另外,如果您也想在最大值上获得快速的访问时间,那么我认为除了按键以某种方式排序之外没有其他可能性。
于 2012-12-07T14:25:05.303 回答