我在 C# 4.0 中工作,但遇到以下问题:
给定一个实数的有限集 S 和一个参数 k(不一定在该集中),找到S 中大于或等于 k 的最小数。
显然,我可以使用平衡二叉树来做到这一点。但是,在 C# 中没有实现这种数据结构可以帮助我。C# 中有哪些算法选项和可能的实现?
编辑:
由于大多数人对批评比真正帮助更感兴趣,所以我将解释更多:
它适用于将真实函数划分为数百万个片段(或箱,如直方图)的算法,我需要找到包含 k 的片段以及在其中应用一些计算的有效方法。这些片段是 [a; b) 并且不要重叠。
我正在设计的方法需要在给定 k 的情况下获取该部分,并且对于性能至关重要,因为它应该每秒调用数千次。因此,O(n) 搜索是不可接受的。
构建 S 的数据结构所浪费的时间并不重要,也不重要,因为该集合只会构建一次并且永远不会改变(它是一个不可变的集合)。
我知道我可以使用具有 O(log n) 搜索复杂度的红黑树。但是,我想研究其他算法选项(可能还有 C# 中的现有实现)。