; vec-search-binary? : (any -> boolean) (vectorof any) -> boolean ; Purpose: Returns whether any element of the vector meets the given ; predicate. ; Examples: ; (vec-search-binary? 4 (vector 0 2 3 4 5 8 10 11 15 20 40)) = true ; (vec-search-binary? 3 (vector)) = false (define (vec-search-binary? n a-vec) (local [;; search : natnum natnum -> boolean ;; Purpose: Return whether n is any element lo..hi-1 of a-vec. (define (search lo hi) (local [(define mid (truncate (/ (+ lo hi) 2)))] (cond [(= lo hi) false] [(= n (vector-ref a-vec mid)) true] [(< n (vector-ref a-vec mid)) (search lo (sub1 mid))] [(> n (vector-ref a-vec mid)) (search (add1 mid) hi)])))] (search 0 (vector-length a-vec)))) ; This is just one way to write binary search.