對於clojure的排序映射,如何找到具有最接近給定值的鍵的條目?尋找與clojure排序映射的給定值最接近的鍵
例如假設我有
(def my-map (sorted-map
1 A
2 B
5 C))
我想喜歡
(find-closest my-map 4)
這將返回(5,C)的函數,因爲這是與最接近的鍵的條目。我可以做一個線性搜索,但是由於地圖是排序的,所以應該有一種方法來找到像O(log n)這樣的值。
我無法在API中找到任何使它成爲可能的東西。例如,如果我可以要求地圖中的第i個條目,我可以拼湊出像我想要的那樣的功能,但是我找不到任何這樣的功能。
編輯:
因此很明顯,排序的地圖是基於Java實現一個PersistentTreeMap類,這是一個紅色和黑色的樹。所以這看起來應該是可行的,至少在原則上是這樣。
+1。謝謝,這非常有幫助。 – 2009-12-31 05:34:03