我有一个SortedDictionary

 SortedDictionary<int, CPUOptimizationObject> myDict;


现在,我想找到X之上的第一个值。
我可以做这样的事情

foreach (var iKey in MyDict.Keys)
{
   if (iKey >= thresholdKey)
   {
       foundKey = iKey;
       break;
   }
}


但这不是明智的表现。
有更好的建议吗?
(集合中是否有类似Binary search for SortedDictionary之类的方法?)

最佳答案

虽然从理论上讲,找到大于给定值的最小项是可以在二叉搜索树上有效执行的操作(这是SortedDictionary的实现方式),但SortedDictionary并没有公开您可以对该数据类型执行此类搜索。

您需要使用二进制搜索树的不同实现,以便有效地执行此类搜索,同时仍使用相同类型的数据结构。没有合适的.NET类型。您将需要使用第三方实现(其中有很多实现)。

09-28 11:39