【发布时间】:2009-12-30 19:06:59
【问题描述】:
对于 clojure 的 sorted-map,我如何找到键最接近给定值的条目?
例如假设我有
(def my-map (sorted-map
1 A
2 B
5 C))
我想要一个类似的功能
(find-closest my-map 4)
将返回 (5,C),因为这是具有最接近键的条目。我可以进行线性搜索,但由于地图已排序,因此应该有一种方法可以在 O(log n) 之类的内容中找到该值。
我在 API 中找不到任何使这成为可能的东西。例如,如果我可以要求地图中的第 i 个条目,我可以拼凑出一个我想要的函数,但我找不到任何这样的函数。
编辑:
显然 sorted-map 是基于一个用 java 实现的 PersistentTreeMap 类,它是一棵红黑树。所以这看起来应该是可行的,至少在原则上是这样。
【问题讨论】: