You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# SortedDictionary中以O(logn)实现Java TreeMap的CeilingEntry等效功能?

C# SortedDictionary的O(log n)边界查找需求

我选择使用SortedDictionary<TKey,TValue>的核心原因是它具备**O(log n)的查找和插入性能,这是平衡二叉搜索树的最优复杂度。我关注的查找场景是当目标键不存在时,需要找到恰好大于目标键的元素(对应Java的CeilingEntry)或恰好小于目标键的元素(对应Java的FloorEntry)——基于底层数据结构的特性,这类操作理应可以在O(log n)**时间内完成。

此前的解决方案建议利用SortedDictionary<TKey,TValue>.Keys集合,但问题在于SortedDictionary<TKey,TValue>.KeyCollection类没有内置的二分查找(BinarySearch)方法。有人提出的变通方案是将Keys集合转换为List后再执行BinarySearch并定位索引,但转换List的操作是**O(n)**复杂度,这直接丧失了SortedDictionary原本的性能优势。

我自己想到一个思路:直接使用KeyCollection类的GetEnumerator来手动实现二分查找,但这种实现方式会非常繁琐且代码可读性差。


内容的提问来源于stack exchange,提问作者Shubham Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:03:25