我正在尋找在類似於Python的bisect_left()
和朋友的Haskell中的bisect
操作。輸入是一個下限,一個上限,一個非遞減函數(Ord a)=>(Int-> a),它必須爲所有下限和上限之間的整數以及一個搜索值定義。返回值是最高整數i
,其中lower <= i <= upper
和f(i) < search_term
。性能應該是O(log(n))。尋找一個通用的「平分」功能
Hoogling此:
(Ord a)=>(Int->a)->Int->Int->a->Int
不會產生任何結果。
庫中是否有標準的通用二元搜索運算符?
是對'INT - > A'函數假定爲單調增加/非減? – jwodder 2012-03-24 23:05:11
@jwodder該函數應該是非遞減的 - 編輯以添加約束 – gcbenison 2012-03-24 23:42:27
您可能還喜歡手指樹,它們被設計爲有效搜索單調謂詞。 – 2012-03-25 03:30:55